话说Association, Composition, Aggregration and Dependancy的区别

原创 2011年01月22日 09:04:00

Association一般是表示两个class/object之间的关系,如:

// Foo has an association with Bar
public class Foo {
    public void doSomething() {
        System.out.println(Bar.doSomethingElse());
    }
}
// Utils has an association with Message
public class Utils {
    public static void print(Message msg) {
        System.out.println(msg.toString());
    }
}
// Message has an association with Person,准确的来说应该是Aggregration的关系
public class Message {
    private Person recipient;
    private Person sender;
    private String text;
    public Message(Person recipient, Person sender, String text) {
        this.recipient = recipient;
        this.sender = sender;
        this.text = text;
    }
}
Composed:
   1: // WebServer is composed of a HttpListener and a RequestProcessor
   2: public class WebServer {
   3:     private HttpListener listener;
   4:     private RequestProcessor processor;
   5:     public WebServer(HttpListener listener, RequestProcessor processor) {
   6:         this.listener = listener;
   7:         this.processor = processor;
   8:     }
   9: }
   1: // WebServer is an aggregate of HttpListener and RequestProcessor
   2: // and controls their lifecycle
   3: public class WebServer {
   4:     private HttpListener listener;
   5:     private RequestProcessor processor;
   6:     public WebServer() {
   7:         this.listener = new HttpListener(80);
   8:         this.processor = new RequestProcessor("/www/root");
   9:     }
  10: }

说说我的理解吧:

Association表示两个类之间的关系,通常表示为一个类对另一类的引用;

Composition表示该类需要另一个类且管理那个类的生命周期,并且一般该类由引用的类来创建;

Aggregration通常由构造方法传入另一个对象或通过依赖注入;

Dependancy通常是通过方法的参数或静态类的引用。

如果我讲的不对,请指正我的说法,谢谢!

Understanding Association, Aggregation, and Composition

Author: Shivprasad koirala   The Article of Original Website:http://www.codeproject.com/Articles/...

UML的关联(Association), 聚合(Aggregation), 组合(Composition)区别

UML的关联(Association), 聚合(Aggregation), 组合(Composition)区别 三者描述对象的附属[也就是依赖]关系: 关联   inheritance: ...
  • ocean181
  • ocean181
  • 2011年01月05日 10:45
  • 11644

面向对象编程中Association、Aggregation和Composition的区别

大家在最初接触面向对象编程时,都难免会遇到描述类与类之间关系的三个词:Association、Aggregation和Composition。对于初学者而言,往往很难弄清楚它们之间的区别。现在,我就这...

UML中关联(Association)、聚合(Aggregation)和合成(Composition)之间的区别

现在,我们需要设计一个项目管理系统,目前我们收集到了如下这些需求: REQ1:一个项目内有多名项目成员REQ2:一名项目成员只能被指派给一个项目REQ3:一个项目内仅有一名项目成员被指派为项目经...

[转]association,aggregation, composition 区别

三者从概念上来讲:Association是一般的关联,有”user a”的含义。Aggregation和Composition都有整体和部分的关系,其中Aggregation中的部分脱离了整体,部分仍...

“检查点”、“里程碑”、“基线”的区别与联系是什么? what's the association between check point, mile stone and baseline?

前几天有个朋友问我“检查点”、“里程碑”、“基线”的区别与联系是什么?结合项目管理理论和实际的经验,总结了三者的区别和联系如下: 一、三者的概念:      检查点(Check Point...

association,aggregation,composition有什麼差別?

class之間有三種關係,inheritance,implementation和association。inheritance和implementation在C++、C#、Java都有直接支援,所以不...
  • sulliy
  • sulliy
  • 2011年08月18日 23:40
  • 1085

UML中类之间的几种关系,关联(association),聚合(Aggregation),组合(Composition)

UML中类之间的几种关系   (2012-04-15 17:35:29) http://blog.sina.com.cn/s/blog_59ca2c2a01012ido.html 转载▼ ...
  • Rodulf
  • Rodulf
  • 2016年01月19日 21:10
  • 1308

UML中Association(关联), Aggregation(聚合), Composition(组合)和Dependency(依赖)辨析

依赖 依赖关系用虚线加箭头表示,如图所示: 上图表示:Animal类依赖于Water类(动物依赖于水)。 依赖是类的五种关系中耦合最小的一种关系。因为依赖关系在生成代码的时候,这两个关系类...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:话说Association, Composition, Aggregration and Dependancy的区别
举报原因:
原因补充:

(最多只允许输入30个字)