这是一个关于软件设计的问题。我将给出一个易于理解的具体(但假设)的例子。
想象一下,我正在创建一个每日交易网站。我有两个类Deal和Merchant。通常,createDeal()方法应该在Deal类还是Merchant类上?
Deal类是一个交易,所以在那里是有意义的。
商人是创造交易的人,所以在那里是有意义的。
或者可能存在混合答案,或者可能没有具体答案。
提前感谢您的意见。
答案 0 :(得分:1)
是的,从真实世界的角度,如果Merchant
创建了每个Deal
,那将是有意义的。
但是在编程方面却崩溃了。实际上你应该有一个DealBuilder
(或工厂...... 区别)的实例,你提供给构造函数中的Merchant
。然后,商家可以使用此构建器创建新的Deal
并将其添加到当前交易列表中。
<强>更新强>
还有另一种方法可以对此进行整理:您可以在Deal
之外创建Merchant
的实例,然后在商家的“交易池”中创建addDeal
。
答案 1 :(得分:1)
这取决于您决定如何使用该应用程序。
您可以实施Deal类来为自己的实例提供服务(例如Singleton,但不是这种情况),或者您可以在Merchant中使用一种方法来调用新的交易。
在伪代码中,我认为您的最佳方法应该类似于:
Class Merchant
method offer_deal(var item, var discount)
deal = new Deal();
deal.item = item;
deal.price = item.price * (1-discount);
return deal;
end_method
...
End_Class
我希望能帮到你!!
答案 2 :(得分:0)
我认为“Deal”和“Marchent”之间存在“有”关系。如果我没有错,那么“Marchent”就有了“交易”。 “交易”可以是单数或复数。
我的建议你应该把它留在“Marchent”中。
但这完全取决于您的要求和架构。