相关文章 {#相关文章}
创建型模式 {#创建型模式}
对象实例化的模式,创建型模式用于解耦对象的实例化过程。
- 单例模式Singleton 某个类只能有一个实例,提供一个全局的访问点。
- 原型模式Prototype 通过复制现有的实例来创建新的实例。
- 工厂方法模式FactoryMethod 一个工厂类根据传入的参量决定创建出哪一种产品类的实例。
- 抽象工厂模式AbstractFactory 创建相关或依赖对象的家族,而无需明确指定具体类。
- 建造者模式Builder 封装一个复杂对象的创建过程,并可以按步骤构造
模式对比: {#模式对比}
工厂方法注重整体的创建,建造者模式注重过程
工厂方法创建一类对象,抽象工厂创建多类对象
结构型模式 {#结构型模式}
把类或对象结合在一起形成一个更大的结构。
- 代理模式Proxy 为其它对象提供一个代理以便控制这个对象的访问。
- 适配器模式Adapter 将一个类的方法接口转换成客户希望的另一个接口。
- 装饰者模式Decorator 动态的给对象添加新的功能。
- 桥接模式Bridge 将抽象部分和它的实现部分分离,使它们都可以独立的变化。
- 外观模式Facade 对外提供一个统一的方法,来访问子系统中的一群接口。
- 组合模式Composite 将对象组合成树形结构以表示"部分-整体"的层次结构。
- 享元模式Flyweight 通过共享技术来有效的支持大量细粒度的对象。
静态代理和装饰者模式的区别: {#静态代理和装饰者模式的区别}
相同点 {#相同点}
都要实现与目标类相同的业务接口
在两个类中都要声明目标对象
都可以在不修改目标类的前提下增强目标方法
不同点 {#不同点}
目的不同 装饰者是为了增强目标对象 静态代理是为了保护和隐藏目标对象
获取目标对象构建的地方不同 装饰者是由外界传递进来,可以通过构造方法传递 静态代理是在代理类内部创建,以此来隐藏目标对象
行为型模式 {#行为型模式}
类和对象如何交互,及划分责任和算法。
- 策略模式Strategy 定义一系列算法,把他们封装起来,并且使它们可以相互替换。
- 模板方法模式TemplateMethod 定义一个操作中算法的骨架,而将一些步骤延迟到子类中。
- 命令模式Command 将命令请求封装为一个对象,使得可以用不同的请求来进行参数化。
- 职责链模式ChainOfResponsibility 允许多个对象按顺序接收请求,将请求依次传递给下一个对象,直到有对象处理它为止。
- 状态模式State 允许一个对象在其内部状态改变时改变它的行为。
- 观察者模式Observer 一个对象(目标对象)维持一系列的观察者对象,每个观察者对象都定义了一个回调函数,当目标对象的状态发生变化时,会通知所有的观察者对象。
- 中介者模式Mediator 为一组对象提供一种松耦合的方式,将对象间的交互封装在Mediator中。
- 迭代器模式Iterator 遍历集合对象,而无需暴露该对象的内部表示。
- 访问者模式Visitor 不改变数据结构的前提下,增加作用于一组对象元素的新功能。
- 备忘录模式Memento 在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。
- 解释器模式Interpreter 给定一个语言,定义它的文法的一种表示,并定义一个解释器。