命令模式(Command): 讲一个请求封装为一个对象。从而使你可用不同的请求对客户进行參数化。对请求队列或记录请求日志。以及支持可撤销的操作。
命令模式长处:
(1),它能较easy地设计一个命令队列。
(2)。在须要的情况下。能够较easy地将命令计入日志。
(3),同意接收请求的一方决定是否要否决请求。
(4)。能够easy地实现请求的撤销和重做。
(5)。因为加进新的详细命令类不影响其它的类,因此添加新的详细命令类非常easy。
(6)。命令模式把请求一个操作的对象与知道怎么运行一个操作的对象切割开。
(7)。敏捷开发告诉我们。不要为代码加入基于推測的、实际不须要的功能。
假设不清楚一个系统是否须要命令模式。一般就不要着急去实现它,其实,在须要的时候通过重构实现这个模式并不困难,仅仅有在真正须要如撤销恢复操作等功能时。把原来的代码重构为命令模式才有意义。
Effective C++ 之模板和泛型编程
1:了解隐式接口和编译器多态
(1)。classes 和模板都支持接口 (interfaces)和多态(polymorphism)。
(2)。对 classes 而言接口是显式的(explicit),以函数签名为中心。多态则是通过 virtual 函数发生于执行期。
(3),对 template 參数而言。接口是隐式的(implicit),奠基于有效表达式。多态则是通过 template 具现化和函数重载解析(function overloading resolution)发生于编译期。
2:了解 typename 的双重意义
(1),声明 template 參数时,前缀keyword class 和 typename 可互换。
(2)。请使用keyword typename 标识嵌套从属类型名称。但不得在 base class lists 或 member initialization list 内以它作为 base class 修饰符。