学习日记之职责链模式和Effective C++
2014-08-12 21:45
281 查看
职责链模式(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),因类型参数而造成的代码膨胀,往往可降低,做法是让带有完全相同二进制表述的具现类型共享实现码。
(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),因类型参数而造成的代码膨胀,往往可降低,做法是让带有完全相同二进制表述的具现类型共享实现码。
相关文章推荐
- 学习日记之迪米特法则、外观模式和 Effective C++
- 学习日记之解释器模式和Effective C++
- 学习日记之建造者模式和Effective C++
- 学习日记之单例模式和Effective C++
- 学习日记之工厂方法模式和Effective C++
- 中介模式和学习日记Effective C++
- 学习日记之工厂方法模式和Effective C++
- 学习日记之中介者模式和Effective C++
- 学习日记之模板方法模式和 Effective C++
- 2017.01.08 学习日记-职责链模式
- 学习日记之命令模式和Effective C++
- 学习日记之单例模式和Effective C++
- 学习日记之状态模式和Effective C++
- 学习日记之原型模式和Effective C++
- 学习日记之代理模式和Effective C++
- 设计模式之单一职责原则学习
- 设计模式学习笔记——单一职责原则
- 设计模式学习笔记之-职责链模式CHAIN OF RESPONSIBILITY
- java 设计模式学习笔记十六 chain of responsibility 职责链设计模式
- JAVA基础第六天学习日记_static关键字、文档、静态代码块、单例开发模式