OOP责任分配

时间:2015-07-05 13:35:15

标签: oop

让我们说我们有两个类User&命令。 应该在哪里实现getUserOrders(userid)的功能? 在User类或Orders类中? 这应该在User类中,因为检索的订单与用户相关,或者在我们检索订单时应该是Order类

1 个答案:

答案 0 :(得分:2)

这取决于您的OOP设计。要考虑的关键特性是松耦合

根据您提供的信息做出决定性决定有点困难。但是,让我们深入研究两种相反的情况。

场景1 :您有一个User班级和一个Order班级。您正在使用组合来连接两者。这意味着User类有一个列表(数组,列表,链表,字典,关联数组或其他)由Order对象组成。在这种情况下,您更愿意在User类中创建一个名为getOrders的函数。这将检索与当前用户关联的所有订单。

订单对用户实体一无所知,因此,当用户获得更改时,将来将更容易重构事物。用户知道订单但反之亦然。这样我们就可以保持松散耦合的物体(在某种程度上)。

场景2 :您有User班级和Orders班级。 Orders类由一个多维数组组成,其中有一个User to Order匹配。在这种情况下,User类对订单一无所知。这里最好在Orders类中使用getOrdersByUser。如果我们要重构我们的订单逻辑,则无需触及User类,因为它与我们的Orders 解耦

此外,最好使您的方法依赖于实例化,而不是全局好客(静态)。毕竟我们正在谈论 Object Oriented Programming。