一 对象创建型模式
1 Abstract factory模式(抽象工厂模式):C++模板的概念,或者是纯虚类。是一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类。
2 BUILDER模式(对象创建模式):类似MVC的MV分离概念。将一个复杂对象的构建与它的表示分离,使同样的构建过程可以创建不同的表示。
3 FACTORY METHOD(工厂方法模式):是抽象工厂的一个子集,具体化一种类。定义一个用于创建对象的借口,让子类决定实例化哪一个类。Factory Method使一个类的实例化延迟到其子类。
4 PROTOTYPE(原型模式):“复制”已存在的实例来返回新的实例,达到提高效率的目的。用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象。
5 SINGLETON(单件模式):保证一个类仅有一个实例,并提供一个访问它的全局访问点。
二 结构型模式:
1 ADAPTER模式(适配器):将一个类的接口转换为客户希望的另一个接口,使原本由于接口不兼容而不能一起工作的那些类可以一起工作
2 BRIDGE(桥接模式):将抽象部分与它的实现部分分离,使它们都可以独立地变化。
3 COMPOSITE(组合模式):定义一个接口,使之用于单一对象,也可以应用于多个单一对象组成的对象组。将对象组合成属性结构以表示“部分-整体”的层次结构,Composite使得用户对单个对象和组合对象的使用具有一致性。
4 DECORATOR(装饰模式):完善对象的功能。动态地给一个对象添加一些额外的职责,就增加功能来说,Decorator模式相比生成子类更为灵活。
5 FACADE(外观模式):降低子系统的复杂度,易于使用和管理,承担了子系统中类交互的责任。为子系统中的一组接口提供一个一直的界面,Facade模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。
6 FLYWEIGHT(享元模式):享元是一个共享对象,它可以同时在不同上下文使用。
7 PROXY(代理模式):代理的作用就像一个指针,使用一个对象替代真正的图像。为其他对象提供一种代理以控制对这个对象的访问。
三 行为型模式:
1 CHAIN OF RESPONSIBILITY(职责链模式):类似MFC消息处理机制,发出消息产生事件,事件没有确定的目标,之后哪个组件希望接受到的消息正好使它就做出响应。使多个对象都有机会处理请求,从而避免请求的发送者和接收者之间的耦合关系,将这些对象连成一条链,并沿着这条链传递该请求,直到有一个对象处理它为止。
2 COMMAND(命令模式):将一个请求封装为一个对象,作为命令发起者和接收者的中介。将一个请求封装为一个对象,从而使你可用不同的请求对客户进行参数化,对请求排队或记录请求日志,以及支持可撤销的操作。
3 INTERPRETER(解释器模式):将频率高的问题格式化,用解释器来自动解决,如正则表达式。给定一个语言,定义它的文法的一种表示,并定义一个解释器,这个解释器使用该表示来解释语言中的句子。
4 ITERATOR(迭代器模式):提供一种方法顺序访问一个聚合对象中各个元素,而又不需暴露该对象的内部表示。
5 MEDIATOR(中介者):用一个中介对象来封装一系列的对象交互,中介者使各对象不需要显式地相互引用,从而使其耦合松散,而且可以独立地改变它们之间的交互。
6 MEMENTO(备忘录模式,纪念品):在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态,这样以后就可将该对象恢复到原先保存的状态。
7 OBSERVER(观察者模式):定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新。
8 STATE(状态模式):不同状态对应不同行为。允许一个对象在其内部状态改变时改变它的行为,对象看起来似乎修改了它的类。
9 STATEGY(策略模式):《effective c++》中用这种方法替代virtual函数实现不同的行为实现,可用函数指针实现。定义一系列的算法,把他们一个个封装起来,并且使他们可相互替换,使得算法可独立于使用它的客户而变化。
注:前一句话是自己的理解或者其它地方摘录,后一句话是《设计模式》书中该模式的意图。现在学习只是学习类别和含义,至于深刻理解需要实践积累经验去验证,不断纠正、加深理解,之后再细看书里的论述——现在大部分看不懂,不过里面肯定藏着真理的。
专注吸收一点总是比什么都没吸收来的好,虽然没能整本书看一遍,但是读完之后算是了解了各种设计模式,也算是有所收获了。