zoukankan      html  css  js  c++  java
  • Association, Aggregation and Composition

      Robert C. Martin explained:

    Association represents the ability of one instance to send a message to another instance. This is typically implemented with a pointer or reference instance variable, although it might also be implemented as a method argument, or the creation of a local variable.

    [Example:]

    |A|----------->|B|

    class A
    {
    private:
    B* itsB;
    };
    Aggregation [...] is the typical whole/part relationship. This is exactly the same as an association with the exception that instances cannot have cyclic aggregation relationships (i.e. a part cannot contain its whole).

    [Example:]

    |Node|<>-------->|Node|

    class Node
    {
    private:
    vector<Node*> itsNodes;
    };
    The fact that this is aggregation means that the instances of Node cannot form a cycle. Thus, this is a Tree of Nodes not a graph of Nodes.

    Composition [...] is exactly like Aggregation except that the lifetime of the 'part' is controlled by the 'whole'. This control may be direct or transitive. That is, the 'whole' may take direct responsibility for creating or destroying the 'part', or it may accept an already created part, and later pass it on to some other whole that assumes responsibility for it.

    [Example:]

    |Car|<#>-------->|Carburetor|

    class Car
    {
    public:
    virtual ~Car() {delete itsCarb;}
    private:
    Carburetor* itsCarb
    };
  • 相关阅读:
    SDWebImage内存性能优化
    dataGridView1数据导出
    listView数据导出
    sqlserver定时备份
    C#-IniFiles文件配置连接数据库
    (转)线程同步详解
    C#工具类:Json操作帮助类(转载)
    c#实现验证码功能
    屏蔽F12审查元素,禁止使用右键菜单
    c# excel如何导入到sqlserver数据库
  • 原文地址:https://www.cnblogs.com/jmax/p/1797942.html
Copyright © 2011-2022 走看看