【依赖】【关联】【聚合】【组合】的区别

1.实例化(依赖)
A将B作为局部变量进行使用.
程序1
void   A::foo()
{
        B   b;
        b.SomeMethod();
}

2.关联
A与B存在一定的关系.   这里只考虑单向导航.   关联在代码中有多种表现形式.
第一种,   作为参数:
程序2
void   A::foo(B&   b)   //   (B*   b)   or   (B   b)
{
        b.SomeMethod();
}

第二种,   作为成员变量:
程序3
class   A
{
public:
        A(B&   b)
        {
                b_   =   b;
        }

        void   foo()
        {
                b_.SomeMethod();
        }
private:
        B&   b_;   //   B*   b_
};

3.聚合
聚合是一种特殊的关联,   聚合更明确指出聚合的主体具有整体-部分关系.   代码的表现形式见程序3.


4.组合
组合是一种特殊的聚合,   组合中的某个主体控制着另外一个主体的生命周期,而且他们还存在整体-部分关系.
程序4
class   A
{
public:
        A()
        {
                b_   =   new   B;
        }

        ~A()
        {
                delete   b_;
                b_   =   NULL;
        }

        void   foo()
        {
                b_-> SomeMethod();
        }
private:
        B*   b_;
};

posted on 2012-05-29 13:55  很多不懂呀。。  阅读(208)  评论(0编辑  收藏  举报

导航