6.11 以委托取代继承
2017-08-15 14:49
309 查看
【1】原代码
【2】以委托取代继承
【3】总结
以委托取代继承是指我们常常为了一时的便利而错误地在代码中使用到了继承机制。
继承可以使子类获得父类的非私有方法、属性,正是这种无形中的便利让不正当地在逻辑上几乎不相关的类之间使用了继承,实质上为追求这种便利的继承是无意义的。
某个子类只使用基类接口中一部分,或者根本不需要继承而来的数据。在子类中新建一个字段用以保存基类:调整子类函数,令它改而委托基类。然后去掉两者之间的继承关系。
当然,以继承取代委托与之恰恰相反。
Good Good Study, Day Day Up.
顺序 选择 循环 总结
class Sanitation { public: string washHands() { return "Cleaned ..."; } }; class Child : public Sanitation { };
【2】以委托取代继承
class Child { public: Child() { m_pSanitation = new Sanitation(); } string washHands() { // 这里使用委托获得 washHands() 方法 return (m_pSanitation->washHands()); } private: Sanitation *m_pSanitation; // 具有委托对象 Sanitation 的实例 };
【3】总结
以委托取代继承是指我们常常为了一时的便利而错误地在代码中使用到了继承机制。
继承可以使子类获得父类的非私有方法、属性,正是这种无形中的便利让不正当地在逻辑上几乎不相关的类之间使用了继承,实质上为追求这种便利的继承是无意义的。
某个子类只使用基类接口中一部分,或者根本不需要继承而来的数据。在子类中新建一个字段用以保存基类:调整子类函数,令它改而委托基类。然后去掉两者之间的继承关系。
当然,以继承取代委托与之恰恰相反。
Good Good Study, Day Day Up.
顺序 选择 循环 总结
相关文章推荐
- 《31天重构》8:以委托取代继承
- Replace Inheritance with Delegation(以继承取代委托)
- 重构手法67:Replace Inheritance with Delegation (以委托取代继承)
- 重构手法68:Replace Delegation with Inheritance (以继承取代委托)
- Replace Delegation with Inheritance (以继承取代委托)
- Replace Inheritance with Delegation (以委托取代继承)
- 重构之以委托取代继承
- Replace Delegation with Inheritance(以委托取代继承)
- 11.11 replace inheritance with delegation(以委托取代继承)
- 处理概括关系之十一 :Replace Inheritance with Delegation(以委托取代继承)
- 处理概括关系之十二 :Replace Delegation with Inheritance(以继承取代委托)
- 继承、组合、委托
- 什么时候用委托,什么时候用继承?
- 第8天:用委托代替继承
- 【设计模式】--TEMPLATE METHOD 模式 和 STRATEGY 模式 :继承和委托
- c#泛型使用详解:泛型特点、泛型继承、泛型接口、泛型委托
- 「基础」C#中的继承,重载,委托,你真的弄明白了吗?
- 面向对象基础(继承类,抽象方法,接口,委托和事件)
- JavaScript-Prototype-new-继承or委托?
- 取代实时 OS!具有优先权继承功能的 Linux 问世