区分委托,组合和聚合(java OO设计)

前端之家收集整理的这篇文章主要介绍了区分委托,组合和聚合(java OO设计)前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我面临着一个持续的问题,将委托,组成和聚合彼此区分开来,并确定最佳使用的情况。

我已经咨询了一个java OO分析和设计书,但我的困惑仍然存在。主要的解释是:

委托:当我的对象使用另一个对象的功能,而不改变它。

组成:我的对象包括其他对象,而这些对象在我的对象被销毁之后又不能存在 – 垃圾收集。

聚合:我的对象包括其他对象,即使在我的对象被销毁后也可以生存。

是否有可能有几个简单的例子来演示每个案例,以及他们背后的推理?这些例子如何可以演示除了我的对象简单地引用另一个对象?

提前谢谢了。

在所有这三种情况下,你的对象将引用另一个对象。区别在于引用对象的行为和/或生命周期。一些例子:

>组成:房子包含一个或多个房间。房间的生活是由房子控制的房间将不存在没有房子。
>聚集:玩具屋建在块。你可以拆卸它,但块会保留。
>委托:你的老板要你给他一杯咖啡,你已经有一个实习生为你做。委托不是一种类型的关联(如组合/聚集)。后两个讨论了Stack Overflow many times

在注释中,你会问如何在每种情况下实现会有所不同,观察在所有情况下我们调用相关对象上的方法。这是真的,在每种情况下,我们会有代码,如

myRoom.doWork();

myBlock.doWork();

myMinion.doWork();

但不同之处在于相关对象的生命周期和基数。

对于组件,房间在房子创建时就存在了。所以我们可以在房子的构造函数中创建它们。

在协会的情况下(我会使用轮胎和汽车)汽车可能会添加轮胎在他们的构造函数,但后来你可能想要删除和更换轮胎。所以你也有类似的方法

removeTyre(FrontLeft)
 addNewTyre(aTyre,BackRight)

很有可能aTyre对象来自一个工厂 – 我们没有新的任何Car的方法

在委派的情况下,您可能甚至没有成员变量来保存委托

resourcingPool().getIntern().getCoffee(SkinnyLatte,workstation 7);

对象之间的关系持续只要实习生正在取咖啡。然后它返回到资源池。

原文链接:https://www.f2er.com/javaschema/282775.html

猜你在找的设计模式相关文章