设计模式概览
设计原则
总原则(开闭原则):对扩展开放,对修改关闭
1、单一职责原则:每个类应该实现单一的职责
2、里氏替换原则:子类对父类的方法尽量不要重写和重载
3、依赖倒转原则:面向接口编程,依赖于抽象而不依赖于具体
4、接口隔离原则:每个接口中不存在子类用不到却必须实现的方法
5、迪米特法则(最少知道原则):一个类对自己依赖的类知道的越少越好
6、合成复用原则:尽量首先使用合成/聚合的方式,而不是使用继承
UML关系
关系由弱到强:依赖 < 关联 < 聚合 < 组合 < 实现 < 泛化
依赖
概念:是一种 使用 的关系,即一个类的实现需要另一个类的协助,所以要尽量不使用双向的互相依赖,在程序中一般表现为类 A 中的方法需要类 B 的实例作为其参数或者变量,而类 A 本身并不需要引用类 B 的实例作为其成员变量。
表示方法:虚线箭头,类 A 指向类 B
 
关联
概念:表示类与类之间的 联接,它使一个类知道另一个类的属性和方法,这种关系比依赖更强、不存在依赖关系的偶然性、关系也不是临时性的,一般是长期性的,在程序中被关联类 B 以类属性的形式出现在关联类 A 中,也可能是关联类 A 引用了一个类型为被关联类 B 的全局变量。
表示方法:实线箭头,类 A 指向类 B
 
聚合
概念:聚合是关联关系的一种特例,是强的关联关系。聚合是整体和个体之间的关系,即 has-a 的关系,整体与个体可以具有各自的生命周期,个体可以属于多个整体对象,也可以为多个整体对象共享。程序中聚合和关联关系是一致的,只能从语义级别来区分。
表示方法:尾部为空心菱形的实线箭头(也可以没箭头),类 A 指向类 B
 
组合
概念:组合也是关联关系的一种特例。组合是一种整体与部分的关系,即 contains-a 的关系,比聚合更强。部分与整体的生命周期一致,整体的生命周期结束也就意味着部分的生命周期结束,组合关系不能共享。程序中组合和关联关系是一致的,只能从语义级别来区分。
表示方法:尾部为实心菱形的实线箭头(也可以没箭头),类 A 指向类 B
 
实现
概念:实现是一种 类与接口 的关系,表示类是接口所有特征和行为的实现,在程序中一般通过类实现接口来描述。
表示方法:空心三角形箭头的虚线,实现类指向接口
 
泛化
概念:泛化是一种 一般与特殊、一般与具体 之间关系的描述,具体描述建立在一般描述的基础之上,并对其进行了扩展。在程序中是通过继承类实现的。比如狗是对动物的具体描述,在面向对象设计的时候一般把狗设计为动物的子类。
表示方法:空心三角形箭头的实线,子类指向父类
 
分类
- 创建型模式(5)- 简单工厂模式(不属于)
- 工厂方法模式
- 抽象工厂模式
- 单例模式
- 建造者模式
- 原型模式
 
- 结构型模式(7)- 代理模式
- 适配器模式
- 桥梁模式
- 装饰器模式
- 门面模式
- 组合模式
- 享元模式
 
- 行为型模式(11)- 解释器模式
- 策略模式
- 观察者模式
- 责任链模式
- 模板方法模式
- 状态模式
- 命令模式
- 迭代器模式
- 调解者模式
- 备忘录模式
- 访问者模式