首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >OOP项目设计

OOP项目设计
EN

Software Engineering用户
提问于 2016-05-18 04:15:41
回答 2查看 285关注 0票数 -8

下面是UML类图

订阅方法用于向植物观察者添加一个草食动物对象。当植物被告知要通知时,它会通过观察名单中的所有草食动物对象进行循环,并告诉每个食草动物注意到它的当前状态。

但是这里有一个错误:虽然设计允许一个食草动物对象订阅多个植物对象,但草食动物目前无法知道哪个植物对象称为它的通知方法。

那么,如何修复将草食动物的通知方法传递给发送通知的植物的引用的UML图呢?

EN

回答 2

Software Engineering用户

发布于 2016-05-18 05:26:41

如果您希望在要通知的Herbivore对象中引用该植物对象,请将通知的签名更改为包含一个植物对象。

代码语言:javascript
复制
notify(state: Maturity, plant: Plant) 
票数 3
EN

Software Engineering用户

发布于 2016-05-18 11:58:22

我会通过添加新类来解决这个问题,并且避免抛出太多的设计模式,而这些模式在领域中并不是真的。

对于植物来说,有大量的新蒸汽,开花的蒸汽和水果的蒸汽。它的位置也有一个2D点。这是一个只有一个得到的财产,因为植物并没有真正移动。同样的,每蒸汽花的数量,每蒸汽的水果,和每果的种子数量。时间传递方法将更新这些变量的状态。尝试吃水果和授粉的方法。它们可以分别作为取食水果量和授粉花量的参数。

对于食草动物类,让它有一个相互作用的方法,采取一种植物。对象是一个输出参数,是一个抽象的方法。食草动物有一个点和一个移动方法,它以一个矩形作为习惯的大小。它有一个布尔方法,因为is at取一个点,并检查它的点是否与参数具有相同的值。

我会增加一个栖息地类。这个班有植物和食草动物的名单。它的边界也有一个矩形。它有一个更新方法。这就为工厂调用了时间传递方法。然后它会移动食草动物。最后,该方法检查碰撞并调用草食动物的交互方法。

票数 0
EN
页面原文内容由Software Engineering提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://softwareengineering.stackexchange.com/questions/318790

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档