zoukankan      html  css  js  c++  java
  • 组合与继承

        今天在逛CSDN的时候,看到一个帖子http://bbs.csdn.net/topics/390750400,说什么继承被打压,组合比继承优秀,瞬间吓尿了......不是被lz说的话吓的,而是我写了几年程序,居然没听说过组合。难道是我孤陋寡闻,跟不上时代了。赶紧百度了一下。

        看了http://socket.blog.163.com/blog/static/20987300420099238350634/这位博主的解说,我松了一口气。组合不就是一个成员变量么,什么时候有了"组合"这么高上大的名字。

        不过既然来了,那我也多说两句。看下面的代码,这就是组合了,

    #include <iostream>
    using namespace std;
    
    class base
    {
        public:
            void show();
    };
    
    class test
    {
        private:
            base _base;
    };
    
    int main(int argc,char *argv[])
    {
        test _test;
    }

    而下面的就是继承了:

    #include <iostream>
    using namespace std;
    
    class base
    {
        public:
            void show();
    };
    
    class test : public base
    {
    };
    
    int main(int argc,char *argv[])
    {
        test _test;
    }

    如果要调用基类的show函数,用继承则比较方便。组合则需要在test类再写一个函数调用。但继承也不见得就比组合适用。之前在项目中遇到过这么一种情况。一个玩家对象类USER,继承了一个NET类(用于向客户端发送数据,已封装为底层,不可修改),这本来也挻合适。可是到后来处理抢号登录时,即同样的号把另一台设备顶掉。最好的办法就是把USER里的socket断掉,然后把新登录的socket连接到USER对象上就OK了。然而由于是继承NET类的,没法把新登录的socket连接到USER对象。如果改为组合,则解决了问题。
        所以所谓用哪个更好,还得根据业务需求来确定。

  • 相关阅读:
    《秒杀系统架构分析与实战 》
    《豆瓣的基础架构》
    转--《亿级用户下的新浪微博平台架构 》
    转-《蚂蚁金服11.11:支付宝和蚂蚁花呗的技术架构及实践 》
    hdu2029
    hdu2027
    hdu2026(water~~)
    PHP电影小爬虫(2)
    今天来做一个PHP电影小爬虫。
    PHP Simple HTML DOM解析器
  • 原文地址:https://www.cnblogs.com/coding-my-life/p/3661607.html
Copyright © 2011-2022 走看看