最近在看《Effective C++ 的55条建议》和C++源码剖析,把上面提到设计模式在这里做个记录,以备面试之需。
之前的设计模式总结:
设计模式学习笔记(一)(策略、观察者、装饰者、工厂)
设计模式学习笔记(二)(单例、命令、适配器、外观、模板方法)
设计模式学习笔记(三)(迭代器、组合、状态、代理、复合)
【1】《Effective C++》条款35,用Non-Virtual Interface实现模板方法模式:
模板方法模式是指,用一个方法函数定义大过程,大过程里面的小过程可以由子类自己实现。
用Non-Virtual Interface实现模板方法模式的实现方法是:定义一个基类,其public函数是大过程,private函数是virtual的小过程(可以不是纯virtual函数,有缺省实现)。
【2】《Effective C++》条款35,用Function Pointer实现策略模式:
策略模式是指:某一类(A类)的子类中可能需要变动的行为,独立为行为类,A类中含有该行为类的对象。
其实现方式我并没有理解(捂脸)。
【3】《STL源码解析》第八章配接器(适配器)
STL中的配接器(adapter)事实上就是一种设计模式。
STL中的栈和队列都用到了适配器模式,是应用于容器的配接器。
STL中还用到了两种配接器,分别是应用于迭代器的配接器和应用仿函数的配接器。