1

我有一些关于 OOP 的问题。我不是高级用户,我遇到了一些人以前可能遇到过的问题。

基本上我使用 MVC 来处理我的 php 项目。我试图让课堂尽可能独立。但我认为这是相当艰难的。例如:

我有一个类汽车和用户。用户将汽车信息发布到网站上,可能是为了出售...

在 User 类中,我基本上有 getUser 来获取用户信息。

所以在 Car 类中,我可能有 setCar、getCar、saveCar。为了显示这些汽车,我可能有一个 displayCars()。在 displayCars() 中,我可以使用 getCar 来获取汽车列表。但我可能还需要使用 User::getUser 来获取提交这些汽车的用户的用户信息。所以在某种程度上,displayCars 依赖于 User::getUser。

那么我应该在这里做什么?

4

2 回答 2

1

你需要的不仅仅是汽车和用户来模拟这个问题。从概念上讲,我至少有以下几点:

  • 每辆单独的汽车都应该由一个 Car 对象表示
  • 用户输入填充 Car 对象属性的信息
  • Car 对象和提交该 Car 的用户都成为 CarDBItem 对象的属性
  • 然后将所有 CarDBItem 放入一个 CarDB 对象中,该对象管理任何用户输入的所有汽车

当然,这已经大大简化了——当您实际编写应用程序时,它会比这更多。但我认为从这些方面来看问题是一个很好的起点。

于 2011-03-05T04:42:38.660 回答
0

您的困惑部分来自于 OO 和 MVC 是完全不同的设计概念,实际上可能是矛盾的。我在工作中面临同样的争论。

例如,OO 说只有类本身应该知道该类是如何工作的,而其他所有类都应该只与它的接口对话。MVC 说您应该拥有几乎没有功能的哑数据(模型)对象,并使用单独的类来保存业务逻辑。

OO 说如果您需要两个类以相似的方式工作,让它们从基类继承通用功能,而 MVC 通常更喜欢在调用具有实际功能的其他类的类前面放置一个外观。

可以将两者结合起来,但不能在相同的位置或图层中。您可以使用组合来构建作为其他模型超集的模型(数据对象),并且可以使用继承来创建类似的控制器,但必须小心执行此操作。

基于 Web 的应用程序非常适合 MVC,并且正如其他人所指出的,您可以使用已建立的框架来指导您。

于 2011-03-05T05:05:28.167 回答