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