首页 > 代码库 > 学习日记之职责链模式和Effective C++

学习日记之职责链模式和Effective C++

职责链模式(Chain of Responsibility):使多个对象都有机会处理请求,从而避免请求的发送者和接收者之间的耦合关系。将这个对象连成一条链,并沿着该条链传递该请求,直到有一个对象处理它为止。


(1),当客户提交一个请求时,请求时沿着链传递直到有一个 ConcreteHandler 对象负责处理它。

(2),接收者和发送者都没有对方的明确信息,切链中的对象自己也不知道链的结构。结果是职责链可简化为对象之间的连接,它们仅需保留一个指向其后继者的引用。而不惜保留它所有的候选接收者的引用。

(3),随时可以增加或处理一个请求的结构,增强了给对象指派职责的灵活性。

(4),一个请求极有可能到了链的末端都得不到处理,或者因为没有得到正确配置而得不到处理。


Effective C++:


1:学习处理模板化基类内的名称

(1),可在 derived class templates 内通过 “this->" 指涉 base class templates 内的成员名称,或藉由一个明白写出的 ”base class 资格修饰符“ 完成。

2:将与参数无关的代码抽离 templates

(1),Templates 生成多个 classes 和多个函数,所以任何 template 代码都不该与某个造成膨胀的 template 参数产生相依关系。

(2),因非类型模板参数而造成的代码膨胀,往往可以消除,做法是以函数参数或 class 成员变量替换 template 参数。

(3),因类型参数而造成的代码膨胀,往往可降低,做法是让带有完全相同二进制表述的具现类型共享实现码。