刚开始我也对java中的依赖、关联、聚集关系的概念很混淆,但是经过多琢磨,结合现实生活中的一些事物进行讲解,竟然能更加透彻地理解这三者的概念,所以总结一下,并归档。
依赖:
依赖体现在类A对象中并不需要存在有类B类型的对象属性,而是在使用时,直接实例化类B来调用相关的业务方法来完成整个业务操作,打个比方:当类A对象一个人在do something的时侯,它发现当前的task难以完成,于是乎它直接拉一个类B对象(实例化一个类B);并要求类B对象协助它完成当前的task。完成task后,类A对象也不负责类B对象的“食宿”和“薪水”(由虚拟机去进行处理)。
关联:
关联与聚集非常相似,但其实仍然存在不同的地方,首先看看相似的地方:关联与聚集相似的地方是类A对象中均存在类B对象属性。
不同点可以从语义上进行区分:关联关系中存在有一定的主次关系,并且这种主次关系可有可无,仍然打个比方:一个客户(customer)在taobao上有N个订单(order),那么在customer对象中就会存在一个ArrayList<order>类型的属性,它们形成了一个一对多的关联关系,但是也存在有无关联的情况,由于某个客户是刚注册的,所以他并还没有订单信息,因此可以看出关联关系中存在有一定的主次关系,并且可有可无的特性(可以主次关系这个词用得不是足够恰当,但是在笔者看来,这样也蛮好理解的)。
聚集:
而聚集则不然,仍然用个比方来进行说明:一个用来煲水的茶壶,由一个底座和壶组成,缺一不可,否则只有底座也煲不了水,只有壶也不能加热。由此可以看出,茶壶对象由底座对象和壶对象组合而成,缺一不可,而且聚集中没有类似于订单与客户之间的主次关系。
========================半夜还没睡,努力写总结的分割线======================
以上内容均为个人的总结与看法,如果您有不同的看法或想法,欢迎你参加讨论。
分享到:
相关推荐
10.3.2 在应用程序中访问具有组成关系的持久化类 10.4 映射复合组成关系 10.5 小结 10.6 思考题 第11章 Hibernate的映射类型 11.1 Hibernate的内置映射类型 11.1.1 Java基本类型的Hibernate映射类型 ...
3. **依赖关系、聚集关系和关联关系**: - **关联关系**:如学生和老师,订单和客户,体现类间的特定对应,可以是单向或双向,一对一、一对多或多对多。 - **依赖关系**:类A调用类B的服务,如Panel与Shape,一个...
10.3.2 在应用程序中访问具有组成关系的持久化类 10.4 映射复合组成关系 10.5 小结 10.6 思考题 第11章 Hibernate的映射类型 11.1 Hibernate的内置映射类型 11.1.1 Java基本类型的Hibernate映射类型 ...
10.3.2 在应用程序中访问具有组成关系的持久化类 10.4 映射复合组成关系 10.5 小结 10.6 思考题 第11章 Hibernate的映射类型 11.1 Hibernate的内置映射类型 11.1.1 Java基本类型的Hibernate映射类型 ...
10.3.2 在应用程序中访问具有组成关系的持久化类 10.4 映射复合组成关系 10.5 小结 10.6 思考题 第11章 Hibernate的映射类型 11.1 Hibernate的内置映射类型 11.1.1 Java基本类型的Hibernate映射类型 ...
- **为什么使用消息**:消息传递技术能有效解决分布式系统中的异步通信问题,减少组件间的依赖性,并且能够处理高并发场景下的数据传输需求。 #### 二、集成挑战与模式的价值 - **集成挑战**:随着企业的业务不断...
不要过分依赖默认计算次序,使用圆括号()没有坏处,它能消除二义性。 and:条件与 如 SELECT prod_id,prod_price,prod_name FROM Products WHERE prod_price‘DELL’ or:条件或 (注: and 的优先级比 or 更高...