设计模式
- 创建型模式
Abstract Factory 由工厂对象产生多个类的对象;
Builder 是由这个工厂对象使用一个相对复杂的协议, 逐步创建一个相对复杂的产品;
Prototype 是由该工厂对象通过拷贝原型对象来创建产品对象;
1) 工厂模式:简单工厂模式、工厂方法模式、抽象工厂模式
工厂方法模式:一个抽象产品类,可以派生出多个具体产品类。
一个抽象工厂类,可以派生出多个具体工厂类。
每个具体工厂类只能创建一个具体产品类的实例。
抽象工厂模式:多个抽象产品类,每个抽象产品类可以派生出多个具体产品类。
一个抽象工厂类,可以派生出多个具体工厂类。
每个具体工厂类可以创建多个具体产品类的实例。
区别:工厂方法模式只有一个抽象产品类,而抽象工厂模式有多个。
工厂方法模式的具体工厂类只能创建一个具体产品类的实例,而抽象工厂模式可以创建多个
2) Abstract Factory 与Builder 的区别是:
Builder 模式着重一步步构造一个复杂对象, 并在最后一步返回产品, 而Abstract Factory 着重于多个系列的产品对象, 其产品是立即可见的
2. 结构型模式
Adapter 是将一个类的接口转换成用户希望的另外一个接口;
Bridge 是将产品的抽象接口部分与具体实现部分分离;
Composite 是将对象组合成树型结构以表示/ 部分) 整体0 的层次结构;
Decorator 动态地给一个对象增加一些额外的职责;
Facade 是为子系统中的一组接口提供一个一致的界面;
Flyweight 使用共享技术支持大量细粒度对象;
Proxy 则是为其他对象提供一种代理以控制对这个对象的访问。
1) Adapter 与Bridge 的区别是:
Bridge 目的是将接口部分和实现部分分离, 从而对它们可以较为容易也相对独立的加以改变, 而Adapter 则意味着要改变一个已有对象的接口;
2) Decorator 与Adapter 的区别是:
Decorator 模式增强了对象的功能而又不改变对象的接口, 但Adapter 模式将给对象一个全新的接口;
3) Proxy 与Adapter 的区别是:
Proxy 提供的是与其实体相同的接口, 即在不改变接口的条件下, 为另一个对象提供代理, 而Adapter 为其所适配的对象提供了一个不同的接口
3. 行为型模式
Chain of Reponsibility 模式是将处理某个请求的对象连成一条链, 用户可以沿着这条链传递该请求, 直到有一个对象处理它为止;
Command 模式是将一个请求封装成一个对象, 从而可用不同的请求对客户进行参数化; Interpreter模式描述的是如何为某个语言定义文法, 如何在该语言中表示一个句子以及如何解释这些句子;
Iterator 模式提供一种方法顺序访问一个聚合中的各个元素而又不暴露该对象的内部表示; Mediator 是用一个中介对象来封装一系列复杂对象的交互, 中介者使各对象不需要显示的相互引用; Memento 是在不破坏封装性的前提下, 捕获一个对象的内部状态并在该对象
之外保存这个状态, 这样以后就可将该对象恢复到原先某一个状态;
Observer 是定义对象间的一种一对多的依赖关系, 当一个对象的状态发生改变时, 所有依赖于它的对象都得到通知, 并自动更新;
State 模式是允许一个对象在其内部状态改变时改变它的行为;
Strategy 定义一系列的封装算法, 把他们一个个封装起来, 并使它们可以相互替换; Template Method 是定义一个操作中的算法的构架, 而将一些步骤延迟到子类中( 即一次性实现一个算法的不变部分, 并将可变的行为留给子类来实现) ;
Visitor 模式是使在不改变各元素类的前提下定义作用于这些元素的新操作。