23种设计模式,以下底色的是个人认为常用的,供参考。
设计模式 | 释义 |
模板设计模式 | 类似C中的回调函数,主架构已经搭建完成,根据派生类不同执行不同的虚函数。 |
策略设计模式 | 和状态模式很像,如果一个程序中使用了if elseif else或switch case等,如果后面还是要增加的情况下,用策略模式会比较好。 |
观察者模式 | 将所有的观察者封装到一个vector或list中,当一个发生变化的时候,直接可以通知其他的对象进行变化。 |
装饰模式 | 主要是通过继承方式导致派生类数量急剧上升时,应该使用装饰模式,重新设计一个类,让其他类继承此类。 |
桥接模式 | 不要将不相关的东西封装到一个类里,应该分开,然后通过虚函数动态绑定,组合两个类的方式实现具体的功能。 |
工厂方法模式 | 工厂模式 |
抽象工厂模式 | 工厂模式 |
原型模式 | 和备忘录模式很像,如果想保存对象的某些特定状态下的属性,使用此模式备忘。 |
builder 构建器 | 如果一个类的构造就很复杂,则使用构造器模式,单独为类的构造进行创建类。 |
Singleton单例模式 | 通过Static成员变量和Static成员函数,构造只有一个实例的模式。 |
flyweight享元模式 | 创建对象池,如果要生成一个对象,先看对象池中是否存在,不存在则再创建,一般和单例模式一起使用。 |
Facede门面模式 | 和中介者模式很像,中介者是系统内不同对象之间的隔离;门面模式是系统内和系统外,隔离,类似RTE的感觉。 |
proxy代理模式 | 一个对象没有办法实现某些特定功能,需要代理时使用。 |
adapter适配器模式 | 新老接口不适配时使用。 |
Mediator中介者模式 | 和门面模式很像 |
State状态模式 | 和策略模式很像 |
Memento备忘录设计模式 | 和原型模式很像 |
Composite组合模式 | 构成树形结构 |
Iterator迭代器模式 | 构造了一种迭代器 |
Chain of Responsibility职责链模式 | 将多个对象封装到List中,从根节点开始一步步的向后移动,直到找到可处理此问题的对象。 |
Command命令模式 | 将行为封装成对象,并对对象进行组合等操作,实现功能组(复制,记录,撤销,重做等),类似函数对象。 |
Visitor访问器模式 | 主要适用于父类本身的操作会经常变化,即今天增加一个新的操作,明天可能又增加一个新的操作。但这个父类有多少子类,是已经确定了。主要是为了防止增加新的操作,而导致的所有子类均需要修改的问题。 |
Interpreter解析器模式 | 将“a+b-c+d”这样的文法,转化为真正的数学运算;再如:将“伍仟陆佰捌拾柒”这种大写的文法,转化为真正的数字等。 |