【发布时间】:2011-07-09 06:31:13
【问题描述】:
我有一些关于 OOP 的问题。我不是高级用户,但我遇到了一些人以前可能遇到过的问题。
基本上我使用 MVC 来处理我的 php 项目。我试图让课堂尽可能独立。但我认为这是相当艰难的。例如:
我有一个类 Car 和 User。用户将汽车信息发布到网站上,可能是为了出售...
在 User 类中,我基本上有 getUser 来获取用户信息。
所以在 Car 类中,我可能有 setCar、getCar、saveCar。为了显示这些汽车,我可能有一个 displayCars()。在 displayCars() 中,我可以使用 getCar 来获取汽车列表。但我可能还需要使用 User::getUser 来获取提交这些汽车的用户的用户信息。所以在某种程度上,displayCars 依赖于 User::getUser。
那我该怎么办呢?
【问题讨论】:
-
也许你有 getCars 也返回发布汽车的人的用户 ID。然后,您可以使用该用户 ID 并将其传递给您的 getUser 方法。
-
displayCars 不应该是 Car 类的一部分。它应该在一个单独的类中,专门用于显示汽车。这个独立的显示器可以显示任何实现 ICar 的类。这样,显示器就可以重复用于 ICar 的不同实现。将显示代码与业务逻辑(功能)分开。谷歌“编程接口而不是实现”
-
嗨 StackOverflowNewbie,是的,getCars 有 userId,我用它传递给 User::getUser() 以获取 userInfo。但是这里的问题在于依赖于 User::getUser() 的 Car::displayCars()。我想减少耦合。 =)
-
嗨 Spidy,我会考虑你的想法。我认为将显示功能分开会减少耦合。然而,这让我想到了另一个相关的问题。例如:我有一个 CarComments 类,它处理用户为这些汽车提交的 cmets。如果我调用 deleteCar(),它也应该调用 CarComment::deleteComments()。所以也有一些依赖。嗯 =)