设计模式
序号 |
样式 |
说明 |
|
1 | 抽象工厂(Abstract Factory) | 提供一个接口来构建一群(families)相关(related)或相依(dependent)的对象;而无须具体指定(specify)它们的具体类别。 | 02.Abstract Factory |
1 | 建设者(Builder) | 将一个复杂对象的构建方法(construction)从其表现;(representation)中分离开来以便同样的构建方法可以建立不同的表现。 | 03.Builder |
1 | 工厂方法(Factory Method) | 工厂方法定义构建对象的接口;但是让子类别决定哪一个类别构建实体对象(instantiate),工厂方法将构建实体对象委托(defer)给子类别。《译注:因为在父类别并不知道要构建的对象实体是哪一个子类别:因此将构建对象的责任委托或者延迟到子类别才决定。》 | 04.Factory Method |
1 | 雏形(Prototype) | 使用雏形实例(prototypical instance)列示(specify)欲构建的物件;构建时则复制这个雏形成新的对象。 《译注:Delphi实作Prototype因无clone复制的功能;故一般实作方式是将对象存放在Tlist中再依实际需要从Tlist中的对象构建(create)新的物件;再附于对象必须的属性RTTI。本书的范例使用TmazePrototypeFactory的对象储存雏形详范例程序》 |
05.Prototype |
1 | 唯一(Singleton) | 保一个类别在系统中只有一个对象实例,并提供一个整体的存取指标。 | 01.Singleton |
2 | 接合器(Adapter) | 转接一个类别的接口成另一个使用端所要求的接口。接合器让多个类别共同工作;而这些类别除了因为其接口兼容否则无法共同工作。 | 06.Adapter |
2 | 桥接(Bridge) | 降低(decouple)属性(abstraction)与实作的耦合性,让两者可以独立的改变。 | 07.Bridge |
2 | 合成(Composite) | 合成多个对象成树状结构以表现个别与整体(part-whole)的层级架构。合成样式让使用端以一致的方式处理个别及合成对象。 | 08.Composite |
2 | 装饰者(Decorator) | 动态的为对象附加(attach)责任(responsibilities)。装饰者样式提供一个弹性的继承替代方案已扩增功能。 | 09.Decorator |
2 | 外观(Facade) | 提供一个次系统接口一组统一的接口;外观样式定义一个比较高阶(higher-level)的接口让次系统容易使用。 | 10.Facade |
2 | 轻量(Flyweight) | 使用共享的方式以有效支持大量微小(fine-grained)对象。 | 11.Flyweight |
2 | 代理(Proxy) | 为另一个对象的存取(access)提供一个代理人(surrogate)或(placeholder)。 | 12.Proxy |
3 | 责任链(Chain of Responsibility) | 经由让更多对象有机会控制请求以避免请求送出者与接收者间的耦合性,将多个接收者对象链并循此链传递请求直到请求被处理为止。 | 19.Chain of Responsibility |
3 | 指令(Command) | 将请求封装成一个对象,让你可以以不同的请求、排列(queue)或登录请求参数化使用端,并支持可取消(undoable)操作。 | 14.Command |
3 | 翻译器(Interpreter) | 给定一种语言,定义其文法(grammar)的表现法(represention)及其翻译器,这个翻译器使用这个表现法翻译语言中的命题(sentence)。 | 15.Interpreter |
3 | 反复(Iterator) | 提供循序存取一个聚集(aggregate)对象中的元素(element);而无须揭露此对象内部的结构。 | 17.Iterator |
3 | 调停者(Mediator) | 定义一个对象封装一组对象彼此间如何互动。调停者样式避免这一组对象彼此间明确的参考促使低耦合性,同时让你独立的改变它们的接口不会相互影响。 | 16.Mediator |
3 | 纪念品(Memento) | 在不违背封装原则下撷取并外型化(externalize)一个对象的内部状态,让这个对象随后可以恢复到这个状态。 | 20.Menento |
3 | 观察者(Observer) | 有需多对象依赖另一个对象及这些依赖的对象如何持续存在直到要求(number of object that depend on another object, how the dependent objects stay up to date) | 18.Ovserver |
3 | 状态(State) | 当一个对象的内在状态改变时允许改变其行为,这个对象看起来(appear)像是改变其类别。 | 21.Sate |
3 | 策略(Strategy) | 定义一个算法(algorithms)家族(family);封装每一个成员;并让它们可以相互替换(interchangeable)。策略样式让算法变化独立于使用它的使用端。 | 22.Strategy |
3 | 样板方法(Template Method) | 定义一个操作中算法的大纲(skeleton),以展缓次类别的某些步骤。样版方法样让次类别重新定义一个算法的某些步骤而无须改变算法的结构。 | 13.Template Method |
3 | 访问者(Visitor) | 说明一个操作执行于一个对象结构的成员(elements)。访问者样式让你定义一个新的操作无须改变这个成员的类别。 | 23.Visitor |
24.总结 |