zoukankan      html  css  js  c++  java
  • 6.11 以委托取代继承

    【1】原代码

     1 class Sanitation 
     2 {
     3 public:
     4     string washHands() 
     5     {
     6         return "Cleaned ...";
     7     }
     8 };
     9 
    10 class Child : public Sanitation 
    11 {
    12 
    13 };

    【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.

    顺序 选择 循环 总结

  • 相关阅读:
    优化网站性能的14条准则
    单元测试
    无配置wcf Host
    .net 4.0
    Java 7 resources
    关于重用
    用GMaven plugin更好地编译系统
    关于系统分层的自问自答
    UBIQUITOUS LANAGUAGE
    用Groovy方式实现接口便于单元测试和协作开发
  • 原文地址:https://www.cnblogs.com/Braveliu/p/7365051.html
Copyright © 2011-2022 走看看