一.设计模式相关内容介绍
1.设计模式概述
2.UML图
2.1类图
2.1.1 概述
2.1.2作用
2.1.3 类图的表示法
类的表示方式
2.1.4 类和类之间关系的表示方式
关联关系
1.单向关联
2.双向关联
3. 自关联
4.聚合关系
5.组合关系
依赖关系
继承关系
实现关系
3.软件设计原则
3.1开闭原则
3.2里氏代换原则
重写大多时候用来重写抽象的方法 。
在不改变父类功能的前提下,父类对象能用的方法,子类也能用。如果子类不能用,说明改变了原来父类中的一些方法(重写的原因)导致不能用。
3.3依赖倒转原则
创建四个类,CPU,硬盘,主存,计算机四个类,CPU,硬盘,主存这三个类作为计算机类的属性。这样计算机的配件的品牌都是固定的了,没法修改。
所以需要改进
在计算机中的属性不再是具体的实现类,而是接口类型。 这样就可以利用多态改变配件品牌了。
3.4接口隔离原则
3.5迪米特法则
Fans,Company,Star通过Agent类产生关系。
3.6合成复用原则
通过继承关系会产生很多的子类,假如说要增加一个光能汽车类的话,又会产生更多不同颜色汽车子类
car和color是聚合关系
二.创建者模式(5)
1.单例模式
介绍
单例模式的实现
简单工厂模式
通过一个例子引入:咖啡店点餐系统
分析咖啡店点餐的代码
简单工厂模式(不属于23中设计模式,反而是一种编程习惯)
工厂方法模式
针对简单工厂模式中的缺点
工厂类和产品之间的耦合,导致增加产品时需要修改工厂类代码违反开闭原则。使用工厂方法模式就可以解决这个问题。
结构
改进简单工厂模式
创建了抽象工厂,创建抽象工厂的子类,一种具体产品具体对应一个工厂。
具体代码
如何记忆工厂方法模式
抽象产品类对应工厂接口
具体产品对应具体工厂
在工厂类中去创建产品
在客户端(如Coffee)中创建工厂对象获得产品,也可以再对产品进行加工。
简单工厂是以简单工厂为桥梁,在简单工厂中返回咖啡,在商店类中接收咖啡,再返回咖啡,但是在简单工厂中返回咖啡时,需要做if else判断,这个简单工厂就是复合工厂,什么咖啡都生产。
工厂方法是将工厂进行了分类,定义了接口类型,目的是在商店类接收咖啡时,哪种工厂生产的都能接收,因为接口就相当于向上抽象了一级,提高了宽容度,具体工厂的任务就是返回具体的咖啡类型,咖啡店类的任务就是先确定具体工厂的类型再返回咖啡。取咖啡的过程就是只跟咖啡店打交道,给咖啡店具体的咖啡工厂对象,就能让咖啡店返回咖啡了。
个人理解
抽象工厂模式
介绍
同一产品等级,第一列都是电脑,第二列都是电话。
同一产品族,第一行比如都是苹果公司生产的,有苹果电脑和苹果手机。
第一个产品族的各个产品都是商务风格,第二个产品族都是运动风格。
如何体现同级别产品?图片中的鞋子,上衣,裤子都是同一产品等级。
抽象工厂概念
结构
实现
甜品中的两个类属于同一等级,咖啡中的两个类属于同一等级,工厂的子类中美式风格与MatchaMousse和AmericanCoffee相关联,表示两者为同一族,意大利风格类与LatteCoffee和Tiramisu相关联,表示二者同一族。
具体代码
优缺点
使用场景
个人理解
模式拓展
简单工厂模式+配置文件
步骤
原型模式
概述
结构
实现-浅克隆
案例
使用场景
缺点:
假如用浅克隆创建了一个对象,当修改这个对象的引用类型的属性时,也会修改被克隆对象的该属性,因为两个对象的这个属性是同一个内存地址。
扩展-深克隆
建造者模式
概述
结构
案例
优缺点
使用场景
模式拓展
个人理解
对比
工厂方法模式VS建造者模式
抽象工厂模式VS建造者模式