设计模式目录导航
一、面向对象设计六大基本原则
二、创建型模型(5种)
关注对象的创建过程。帮助我们创建对象。
1 单例模式 singleton
保证一个类只有一个实例,并且提供一个访问该实例的全局访问点。
2 工厂模式 factory
(1)简单工厂模式 simple factory
用来生产同一等级结构中的任意产品(对于增加新的产品,需要修改已有地代码)。
(2)工厂方法模式 factory method
用来生产同一等级结构中的固定产品(支持增加任意产品)。
3 抽象工厂模式 abstract factory
用来生产不同产品族的全部产品(对于新增加的产品无能为力,但是支持增加产品族)。
4 建造者模式 builder
分离了对象子组件的单独结构(由Builder负责)和装配(由Director负责),从而可以构造出复杂的对象。
5 原型模式 prototype
当通过 new 产生一个对象需要非常繁琐的数据准备或访问权限时,则可以使用原型模式。
三、结构型模型(7种)
关注对象和类的组织。是从程序的结构上实现松耦合,从而可以扩大整体的类结构,用来解决更大的问题。
1 适配器模式 adapter
使原来由于接口不兼容不能一起工作的类可以一起工作。
2 代理模式 proxy
为真实对象提供一个代理,从而控制对其真实对象得到访问。
3 桥接模式 bridge
处理多层继承结构,处理多维度变化的场景,将各个维度设计成独立的继承结构,使各个维度可以独立的扩展在抽象层建立关联。
4 装饰模式 decorator
动态的给一个对象添加额外的功能,比继承灵活。
5 组合模式 composite
将对象组合成树状结构以表示“部分和整体”层次结构,使得客户可以统一的调用叶子对象和容器对象。
6 外观模式 facade
为子系统提供统一的调用接口,使得子系统更加容易使用。
7 享元模式 flyweight
运用共享技术有效地实现管理大量细粒度对象,节省内存,提高效率。
四、行为型模型(11种)
关注系统中对象之间的相互交互,研究系统在运行时对象之间的相互通信和协作,进一步明确对象的职责。
1 责任链模式 chain of responsibility
将能够处理同一类请求的对象连成一条链,所提交的请求沿着链传递,链上的对象逐个判断是否有能力处理该请求。如果能则处理,否则传递给;链上的下一个对象。
2 命令模式 command
将一个请求封装到一个对象,从而使得可用不同的请求对客户进行参数化。
3 解释器模式 interpreter
用于描述如何构成一个简单的语言解释器,主要用于使用面向对象语言开发的编译器和解释器设计。
4 迭代器模式 iterator
提供一种可以遍历聚合对象的方式。又称为游标(cursor)模式。
5 中介者模式 mediator
如果一个系统中对象之间的联系呈现网状结构,对象之间存在大量多对多的关系,导致关系及其复杂,这时可以引入一个中介者对象,使得各个对象只跟中介者对象打交道,从而将复杂的网络结构化为星型结构。
6 备忘录模式 memento
保存某个对象内部状态的拷贝,使得以后就可以将该对象恢复到原先的状态。
7 观察者模式 observer
主要用于 1 :N 的通知。当一个对象(目标对象)的状态变化时,它需要通知一系列对象(观察者对象),令它们做出响应。
8 状态模式 state
用于解决系统中复杂对象的状态转换以及不同状态下行为的封装问题。
9 策略模式 strategy
策略模式对应于解决某一个问题的一个算法族,允许用户从该算法族中任选一种算法解决一个问题,同时可以方便的更换算法或者增加新的算法。并且由客户端决定调用哪个算法。
10 模板方法模式 template method
处理步骤父类中定义好,具体实现延迟到子类中定义。
11 访问者模式 visitor
表示一个作用于某对象结构中的各元素的操作,它使我们可以在不改变元素的类的前提下定义作用于这些元素的新操作。