摘录于《设计模式:可复用面向对象软件的基础》
总结下设计模式简述与常用命名与别名,方便使用和阅读代码时好理解。
推荐几篇全面讲设计模式的文章:
设计模式看了又忘,忘了又看?—LieBrother
创建型模式
名称 | 英文名 | 别名 | 可变的方面 |
---|---|---|---|
抽象工厂 | Abstract Factory | Kit | 产品对象家族 |
建造者模式 | builder | 如何创建一个组合对象 | |
工厂方法 | Factory Method | Virtual Constructor(虚构造器) | 被实例化的子类 |
原型模式 | Prototype | 被实例化的类 | |
单例模式 | Singleton | 一个类的唯一实例 |
行为型模式
名称 | 英文名 | 别名 | 可变的方面 |
---|---|---|---|
责任链模式 | Chain of Resposibility | 满足一个请求的对象 | |
命令模式 | Command | Action(动作),Transaction(事务) | 何时,怎样满足一个请求 |
解释器模式 | Interpreter | Expression | 一个语言的文法及解释 |
迭代器模式 | Iterator | Cursor(游标) | 如何遍历,访问一个聚会的各元素 |
中介模式 | Mediator | 对象间怎样交互,和谁交互 | |
备忘录模式 | Memento | Token | 一个对象中那些私有信息存放在该对象之外,以及在什么时候进行存储 |
观察者模式 | Observer | Dependents(依赖),(Publish-Subscribe)发布-订阅 | 多个对象依赖于另外一个对象,而这些对象有如何保持一致 |
状态模式 | State | 对象的状态 | |
策略模式 | Strategy | Policy(政策) | 算法 |
模板方法模式 | Template Method | 算法中的某些步骤 | |
访问者模式 | Visitor | 某些和作用于一个(组)对象上的操作,但不修改这些对象的类 |
结构型模式
名称 | 英文名 | 别名 | 可变的方面 |
---|---|---|---|
适配器模式 | Adapter | Wrapper (包装器) | 对象的接口 |
桥梁模式 | Bridge | Handle/Body | 对象的实现 |
组合模式 | Composite | 一个对象的结构和组成 | |
装饰器模式 | Decorator | Wrapper (包装器) | 对象的职责,不生成子类 |
外观模式 | Facade | 一个子系统的接口 | |
享元模式 | Flyweight | 对象的存储开销 | |
代理模式 | Proxy | Surrogate | 如何访问一个对象,该对象的位置 |