下面是UML类图

订阅方法用于向植物观察者添加一个草食动物对象。当植物被告知要通知时,它会通过观察名单中的所有草食动物对象进行循环,并告诉每个食草动物注意到它的当前状态。
但是这里有一个错误:虽然设计允许一个食草动物对象订阅多个植物对象,但草食动物目前无法知道哪个植物对象称为它的通知方法。
那么,如何修复将草食动物的通知方法传递给发送通知的植物的引用的UML图呢?
发布于 2016-05-18 05:26:41
如果您希望在要通知的Herbivore对象中引用该植物对象,请将通知的签名更改为包含一个植物对象。
notify(state: Maturity, plant: Plant) 发布于 2016-05-18 11:58:22
我会通过添加新类来解决这个问题,并且避免抛出太多的设计模式,而这些模式在领域中并不是真的。
对于植物来说,有大量的新蒸汽,开花的蒸汽和水果的蒸汽。它的位置也有一个2D点。这是一个只有一个得到的财产,因为植物并没有真正移动。同样的,每蒸汽花的数量,每蒸汽的水果,和每果的种子数量。时间传递方法将更新这些变量的状态。尝试吃水果和授粉的方法。它们可以分别作为取食水果量和授粉花量的参数。
对于食草动物类,让它有一个相互作用的方法,采取一种植物。对象是一个输出参数,是一个抽象的方法。食草动物有一个点和一个移动方法,它以一个矩形作为习惯的大小。它有一个布尔方法,因为is at取一个点,并检查它的点是否与参数具有相同的值。
我会增加一个栖息地类。这个班有植物和食草动物的名单。它的边界也有一个矩形。它有一个更新方法。这就为工厂调用了时间传递方法。然后它会移动食草动物。最后,该方法检查碰撞并调用草食动物的交互方法。
https://softwareengineering.stackexchange.com/questions/318790
复制相似问题