首页 > 代码库 > 学习日记之命令模式和Effective C++

学习日记之命令模式和Effective C++

命令模式(Command) 讲一个请求封装为一个对象,从而使你可用不同的请求对客户进行参数化,对请求队列或记录请求日志,以及支持可撤销的操作。


命令模式优点:

(1),它能较容易地设计一个命令队列。

(2),在需要的情况下,可以较容易地将命令计入日志。

(3),允许接收请求的一方决定是否要否决请求。

(4),可以容易地实现请求的撤销和重做。

(5),由于加进新的具体命令类不影响其他的类,因此增加新的具体命令类很容易。

(6),命令模式把请求一个操作的对象与知道怎么执行一个操作的对象分割开。

(7),敏捷开发告诉我们,不要为代码添加基于猜测的、实际不需要的功能。如果不清楚一个系统是否需要命令模式,一般就不要着急去实现它,事实上,在需要的时候通过重构实现这个模式并不困难,只有在真正需要如撤销恢复操作等功能时,把原来的代码重构为命令模式才有意义。


Effective C++ 之模板和泛型编程


1:了解隐式接口和编译器多态

(1),classes 和模板都支持接口 (interfaces)和多态(polymorphism)。

(2),对 classes 而言接口是显式的(explicit),以函数签名为中心。多态则是通过 virtual 函数发生于运行期。

(3),对 template 参数而言,接口是隐式的(implicit),奠基于有效表达式。多态则是通过 template 具现化和函数重载解析(function overloading resolution)发生于编译期。


2:了解 typename 的双重意义

(1),声明 template 参数时,前缀关键字 class 和 typename 可互换。

(2),请使用关键字 typename 标识嵌套从属类型名称;但不得在 base class lists 或 member initialization list 内以它作为 base class 修饰符。