• 对象之间的关系


    一、设计原则

    1、如果想表达创建一个对象或者对一个对象进行修改,那么方法(函数)应该返回一个对象。

    2、如果想表达依赖某个对象,则将其作为方法参数传递进来读取或修改,或者在方法中自己来创建依赖对象。

    3、如果想表达一个对象必须由n个其他不同对象组合而成,那么将这些对象定义为类的成员变量。

    4、如果想表达不同对象之间的关联关系(一对一,一对多,多对多),则定义为成员变量。表达的是拥有,单向、双向、自关联(链表)。一个学生可以选择n门课程,一门课程有m个学生选择。

     

    关系之间的区别

    1.聚合与组合

    (1)聚合与组合都是一种结合关系,只是额外具有整体-部分的意涵。
    (2)部件的生命周期不同
    聚合关系中,整件不会拥有部件的生命周期,所以整件删除时,部件不会被删除。再者,多个整件可以共享同一个部件。
    组合关系中,整件拥有部件的生命周期,所以整件删除时,部件一定会跟着删除。而且,多个整件不可以同时间共享同一个部件。
    (3)聚合关系是“has-a”关系,组合关系是“contains-a”关系。

    2.关联和聚合

    (1)表现在代码层面,和关联关系是一致的,只能从语义级别来区分。
    (2)关联和聚合的区别主要在语义上,关联的两个对象之间一般是平等的,例如你是我的朋友,聚合则一般不是平等的。
    (3)关联是一种结构化的关系,指一种对象和另一种对象有联系。
    (4)关联和聚合是视问题域而定的,例如在关心汽车的领域里,轮胎是一定要组合在汽车类中的,因为它离开了汽车就没有意义了。但是在卖轮胎的店铺业务里,就算轮胎离开了汽车,它也是有意义的,这就可以用聚合了。

    3.关联和依赖

    (1)关联关系中,体现的是两个类、或者类与接口之间语义级别的一种强依赖关系,比如我和我的朋友;这种关系比依赖更强、不存在依赖关系的偶然性、关系也不是临时性的,一般是长期性的,而且双方的关系一般是平等的。
    (2)依赖关系中,可以简单的理解,就是一个类A使用到了另一个类B,而这种使用关系是具有偶然性的、临时性的、非常弱的,但是B类的变化会影响到A。

    4.综合比较

    这几种关系都是语义级别的,所以从代码层面并不能完全区分各种关系;但总的来说,后几种关系所表现的强弱程度依次为:
    组合>聚合>关联>依赖;

     

  • 相关阅读:
    在 Windows 10 中创建任何大小的虚拟测试文件的 2 种方法
    最近的github又不稳了。。ip host 大法来
    windows mklink /d /h /j 精讲
    kafka-manager配置和使用
    Java——七种垃圾收集器+JDK11最新ZGC
    聚簇索引和非聚簇索引(通俗易懂 言简意赅)
    【转载】Java中的锁机制 synchronized & 偏向锁 & 轻量级锁 & 重量级锁 & 各自优缺点及场景 & AtomicReference
    都1202年了奉劝那些还在用centos6的gs,赶紧切ubuntu-Centos6 升级 gcc 惨痛教训
    Tamper Chrome – 请求修改扩展,可用于Web安全测试
    线程、线程池三大方法、七大参数、四种策略
  • 原文地址:https://www.cnblogs.com/igoodful/p/11616085.html
Copyright © 2020-2023  润新知