CarManufacturer创建一个Car并将其存储在ParkPlace中,直到汽车售出为止。制造商必须知道,在给定的时间,未售出的汽车在哪里。例如,如果一个人从ParkPlace上偷了一辆车,制造商就必须得到“通知”(没有定义“通知”可能是什么,因为我不知道什么实现可能更好)
我觉得这是一个经典的问题,可以手动检索对象。我可以反复遍遍世界各地所有工厂的公园,并检查哪一个是制造商的。但效率很低。解决这个问题的标准方法是什么?
创建一个类作为两个聚合类之间的包装器是正确的吗?就像C中的指针。
在这里,我的UML类图(在法语中: Voiture是Car,Constructor是CarManufacturer,Fiche是Record,Place是ParkPlace,Rangee是停车场中的Row ):

制约因素:
如何解决这个问题,还是它是一个正确的实现?
发布于 2019-10-27 11:13:18
问题所在
你的问题不完全清楚,但我知道:
潜在解
您的问题的经典解决方案是观测器模式:一个Observable对象通知一个或多个Observer它的状态已经改变。然后,通过调用Observer的一个方法来实现通知,最终将调用对象的引用传递给该方法(如果观察者同时跟踪几个可观察到的值)。
另一个解决方案是使用事件驱动的体系结构。例如把一辆车从一个地方移到另一个地方,卖一辆车等.由负责的对象发布到一个或多个事件队列,事件处理器执行所需的任务。在你的例子中,你可以想象一个CarEvent队列,在这个队列中,每个制造商都会跟踪与他的汽车相关的事件。
你需要做的是
不幸的是,在您的模型中有太多不清楚的问题。例如:
Record被出售时,Car会发生什么?Car也不与Manufacturer相关联?ParkPlace不知道manufacturer,或者至少Record不知道拥有的Manufacturer?因此,您需要做的是澄清您设计中的责任。例如:
ParkPlace是Observable吗?那么谁应该是Observer呢:Record还是Manufacturer?Parkplace是找到Record的唯一途径,Record是Observable,Manufacturer是Observer?您还需要考虑聚合:您真的想要在另一个聚合中直接从Place聚合访问到Record吗,而不经过聚合根,哪个是制造商?
一旦你澄清了这一切,你需要重新思考通航性的关联。这将帮助您做出正确的实现选择。具体来说,在您的关系图中,从Manufacturer到Record的关联似乎是作为Manufacturer中的Records列表实现的。这种实现关联的方式意味着从制造商到记录的导航性,而不是相反的方式。
https://stackoverflow.com/questions/58123459
复制相似问题