现在的位置: 首页 > 综合 > 正文

学习笔记-聚合(组合)

2012年06月18日 ⁄ 综合 ⁄ 共 685字 ⁄ 字号 评论关闭
class ElectricMotor
{
public:
    ElectricMotor () {};
    virtual ~ElectricMotor () {};

public:
    void StartMotor ()
    {
        Accelerate ();
        Cruise ();
    }

    void StopMotor ()
    {
        cout << "Motor stopped" << endl;
    };

private:
    void Accelerate ()
    {
        cout << "Motor started" << endl;
    }

    void Cruise ()
    {
        cout << "Motor running at constant speed" << endl;
    }
};

class Fan
{
public:
    Fan () {};
    ~Fan () {}

    void StartFan ()
    {
        m_ElectricMotor.StartMotor();
    }
    void StopFan ()
    {
        m_ElectricMotor.StopMotor ();
    }
private:
    ElectricMotor m_ElectricMotor;
};

这样子利用聚合比私有继承好,因为电动机应该是风扇里面的一部分,安装逻辑,应该是聚合好

私有继承虽然有如下优点:

派生类可以访问基类的保护成员函数

派生类可以覆盖基类的虚函数

但是伴随的确是如下,

在多程序员编程环境下,代码灵活性差,容易出错

继承带来的性能问题

而聚合这个就像装饰者模式,很好使用,所以能用聚合就避免私有继承.

 

作者: 林羽飞扬
出处:http://www.cnblogs.com/zhengyuhong/
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留作者信息,且在文章页面明显位置给出原文连接

抱歉!评论已关闭.