一、创建型
简单工厂模式(非23种设计模式)
一个工厂类完成每种产品的生产
1、工厂(方法)模式
具体的工厂子类负责每一种产品的生产
2、抽象工厂模式
多个工厂模式的再组合
3、建造者模式
创建对象不直接通过类而是通过一个额外的类,并且需要调用者自己指定哪些组件需要赋值并指定赋值顺序
4、原型模式
创建对象不通过new而是通过复制已存在对象的方式。
5、单例模式
整个程序内只能生成一个某类的唯一一个对象
二、结构型
1、适配器模式
原有接口A和B,现要求通过A能访问到B,就需要一个中间层C适配(C实现A并持有B,调用B的方法)
2、装饰者模式
在保证访问原有接口A方式不变的情况下,对接口A进行功能扩展
3、桥接模式
把原本具体类继承多个父类的方式改成具体类继承一个父类,同时该父类引用其他父类并调用其方法,以减少具体类的数量
4、组合模式
单体和整体实现同样的访问方法,且整体中定义单体的集合,这样就可以随意嵌套单体和整体而可以用同样的访问方式。
5、门面模式
通过一个傻瓜操作访问一个复杂功能,无需知道内部实现
6、享元模式
通过对象复用避免频繁创建对象
7、代理模式
不直接访问对象本身而是通过生成其代理对象,控制对对象的访问和增强原对象的功能
三、行为型
1、观察者模式
一个对象(被观察者)的状态变化时自动通知注册到它的所有对象(观察者)
2、责任链模式
一系列操作抽象成拥有共同父类的处理者们,前一个处理完自动调用后一个处理
3、策略模式
把一个请求的多种处理方式抽象成一个个策略,统一由context调用
4、模板(方法)模式
一个操作有公共的步骤但是不同的实现,抽象出这个操作(模板方法),公共步骤由子类实现,使用时只需调用这个模板方法即可
5、命令模式
不同的请求封装成不同命令,通过给调用者设置不同命令,再由各命令调用各自实际命令执行者执行。
6、解释器模式
定义一个简单表达式,然后赋值递归解释该表达式
7、迭代器模式
遍历容器中对象的特殊类
8、中介者模式
多个对象之间有相互关联关系,把他们的关系维护通过一个中间对象统一管理,这样只需要和中间对象交互即可。
9、备忘录模式
一个对象需要保存历史状态数据,每个历史状态都作为一个备忘录对象保存,在需要时恢复。
10、状态模式
对象的几种不同状态及各自行为提取成单独的对象,通过环境中设置状态并执行来实现不同状态触发不同行为的功能
11、访问者模式
同一类元素集合,针对不同访问者访问同一接口返回不同的数据