分类
创建型:
* 工厂方法模式(Factory Method)、抽象工厂模式(Abstract Factory)、建造者模式(Builder)、原型模式(Prototype)、单例模式(Singleton)
结构型:
* 适配器模式(Adapter)、桥接模式(Bridge)、组合模式(Composite)、装饰器模式(Decorator)、门面模式(Facade)、享元模式(Flyweight)、代理模式(Proxy)
行为型:
* 解释器模式(Interpreter)、模板方法模式(Template Method)、责任链模式(Chain of Responsibility)、命令模式(Command)、迭代器模式(Iterator)、调解者模式(Mediator)、备忘录模式(Memento)、观察者模式(Observer)、状态模式(State)、策略模式(Strategy)、访问者模式(Visitor)
模式之间关系图
分类
创建型:
* 工厂方法模式(Factory Method)、抽象工厂模式(Abstract Factory)、建造者模式(Builder)、原型模式(Prototype)、单例模式(Singleton)
结构型:
* 适配器模式(Adapter)、桥接模式(Bridge)、组合模式(Composite)、装饰器模式(Decorator)、门面模式(Facade)、享元模式(Flyweight)、代理模式(Proxy)
行为型:
* 解释器模式(Interpreter)、模板方法模式(Template Method)、责任链模式(Chain of Responsibility)、命令模式(Command)、迭代器模式(Iterator)、调解者模式(Mediator)、备忘录模式(Memento)、观察者模式(Observer)、状态模式(State)、策略模式(Strategy)、访问者模式(Visitor)
模式之间关系图
模式之间关联关系和对比
* 实际业务代码中, 工厂模式通常为单例;
* 工厂模式注重的是对象的创建过程;
* 策略模式注重的是算法的隐式替换;
* 策略模式注重的是算法能否动态隐式替换;
* 委派模式注重分发过程;
* 工厂方法模式是一种特殊的模板模式;
* 工厂方法模式相当于只有一个抽象方法的模板模式;
* 策略模式注重动态隐式替换;
* 模板支持不允许动态替换;
* 装饰者模式注重给对象动态添加方法;
* 静态代理注重控制对象的访问,给对象的指定方法增强;
* 代理模式通常在代理对象中创建被代理对象实例;
* 装饰者模式通常 把被装饰者作为构造参数传递给装饰器;
* 装饰者模式中, 被装饰者和装饰器必须同宗同源;(is-a)
* 适配器模式可以不同宗同源;
* 适配器可以采用静态代理实现, 但不是唯一实现方式;
* 适配器可以结合策略模式, 用以应对复杂逻辑;