创建型
工厂方法模式
定义创建对象的工厂接口,将实际创建工作推迟到子类中
抽象工厂模式
向客户端提供一个接口,使得客户端在不指定产品具体类型的情况下,创建多个产品族中的产品对象
单例模式
确保一个类只有一个实例,并且由该类自行实例化并向外界提供这个实例
建造者模式
将一个复杂对象的内部实现和对象的创建过程分割开来,使得同样的创建过程可以得到不同内部实现的对象
结构型
适配器模式
把一个类的接口变成系统期待的另一种接口从而使原本因接口不兼容而无法使用的类能够工作起来
合成模式
将对象组织到树结构中,使得单纯元素和复合元素可以同等看待
装潢模式
把一个对象放到另一个类中加以包装,从而扩展对象的功能
代理模式
给一个对象提供一个代理对象,并由代理对象接管对原对象的操作
门面模式
提供一个高层次的接口,使得子系统更易于使用
桥梁模式
用一个继承结构封装一种可变因素,使得每种可变性可以独立的变化
行为型
策略模式
为一组算法设计一个公共的接口,从而使得它们可以互换
模板方法模式
准备一个抽象类,将部分逻辑以具体方法以及构造器的形式实现,然后声明一些抽象方法来迫使子类实现剩余的逻辑
观察者模式
多个观察者同时监听一个主题,当主题状态变化时会通知所有的观察者,使其自动更新自己
迭代器模式
顺序访问一个容器中的元素而不必暴露容器的内部实现
责任链模式
每个对象持有下一个对象的引用来形成一条请求链,请求在链条上传递直到某个对象决定处理此请求
备忘录模式
在不破坏封装性的前提下,捕获一个对象的状态并保存,在适当的时候又将对象还原,回到之前保存起来的状态
状态模式
一个对象的行为在其内部状态改变时也随之改变,就如同改变了它的类一样
访问者模式
封装一些用于某种数据结构元素的操作,当改变这些操作时,接收操作的数据结构可以保持不变
解释器模式
对给定语言定义出一种词法表示并同时提供一个解释器来解释语言中的句子
调停者模式
包装一系列对象相互作用的方式,使得对象不必相互直接引用,从而实现松散耦合