模式列表
编号 | 模式名称 | 类别 | 英文 | 定义 |
---|---|---|---|---|
1 | 抽象工厂 | 创建型 | Abstract Factory | 依赖抽象类,在具体类中实例化整个家族的对象 |
2 | 生成器 | 创建型 | Builder | 「附录」使你能够分步骤创建复杂对象。 该模式允许你使用相同的创建代码生成不同类型和形式的对象。也叫建造器 |
3 | 工厂方法 | 创建型 | Factory Method | 把实例化推迟到子类(被抽象工厂复用) |
4 | 原型 | 创建型 | Prototype | 「附录」是用于创建重复的对象,同时又能保证性能。 |
5 | 单例 | 创建型 | Singleton | 一个类只有一个实例 |
6 | 适配器 | 结构型 | Adapter | 转换接口 |
7 | 桥接 | 结构型 | Bridge | 「附录」将一个大类或一系列紧密相关的类拆分为抽象和实现两个独立的层次结构, 从而能在开发时分别使用。 |
8 | 组合 | 结构型 | Composite | 对象组合成树形,子树也是树(类型一致),统一处理个别对象与组合对象 |
9 | 装饰器 | 结构型 | Decorator | 动态的将责任附加到对象上,装饰器和被装饰对象拥有相同的超类型 |
10 | 外观 | 结构型 | Facade | 简化接口 |
11 | 享元 | 结构型 | Flyweight | 「附录」轻量级。通过共享多个对象所共有的相同状态, 让你能在有限的内存容量中载入更多对象。 |
12 | 代理 | 结构型 | Proxy | 为另一个对象提供替身以控制对这个对象的访问 |
13 | 责任链 | 行为型 | Chain of Responsibility | 「附录」允许你将请求沿着处理者链进行发送。 收到请求后, 每个处理者均可对请求进行处理, 或将其传递给链上的下个处理者。 |
14 | 命令 | 行为型 | Command | 请求封装成对象,请求者和接受者解藕 |
15 | 解释器 | 行为型 | Interpreter | 「附录」提供了评估语言的语法或表达式的方式。这种模式实现了一个表达式接口,该接口解释一个特定的上下文。 |
16 | 迭代器 | 行为型 | Iterator | 提供一种方法遍历集合,而不用暴露内部实现 |
17 | 中介者 | 行为型 | Mediator | 「附录」能让你减少对象之间混乱无序的依赖关系。 该模式会限制对象之间的直接交互, 迫使它们通过一个中介者对象进行合作。很像中介机构 |
18 | 备忘录 | 行为型 | Memento | 「附录」允许在不暴露对象实现细节的情况下保存和恢复对象之前的状态。 |
19 | 观察者 | 行为型 | Observer | 在对象之间定义一对多的关系,当一(主题)改变状态,依赖它的对象(观察者)都会收到通知,并自动更新(MVC) |
20 | 状态机 | 行为型 | State | 有限状态机,状态切换,自类型也变了,对应的操作也变。 |
22 | 策略 | 行为型 | Strategy | 定义算法簇,彼此可以相互替换,使算法的变化独立于使用算法的用户 |
22 | 模版方法 | 行为型 | Template Method | 算法大纲在超类,步骤细节在子类,超类埋钩子,子类复用 |
23 | 访问者 | 行为型 | Visitor | 「附录」它能将算法与其所作用的对象隔离开来。 |
原则SOLID
S单一职责原则
一个类只做一件事,一个类应该只有一个引起它修改的原因。
O开放封闭原则
一个软件实体如类、模块和函数应该对修改封闭,对扩展开放。
L里氏替换原则
子类应该可以完全替换父类。也就是说在使用继承时,只扩展新功能,而不要破坏父类原有的功能。
I接口隔离原则
客户端不应依赖它不需要的接口。如果一个接口在实现时,部分方法由于冗余被客户端空实现,则应该将接口拆分,让实现类只需依赖自己需要的接口方法。
D依赖倒置原则
细节应该依赖于抽象,抽象不应依赖于细节。把抽象层放在程序设计的高层,并保持稳定,程序的细节变化由低层的实现层来完成。
迪米特法则
又名「最少知道原则」,一个类不应知道自己操作的类的细节,换言之,只和朋友谈话,不和朋友的朋友谈话。
守则
- 分离变化与不变
- 组合优于继承
- 对接口编程,而不是对实现编程
- 交互对象松耦合
更多
简单工厂
MVC