我有这个怀疑很长一段时间...希望任何人都能照亮我。多态性和多层应用程序
假设我在模型中有3个类。
abstract class Document {}
class Letter extends Document {}
class Email extends Document {}
和带有返回文档(Letter或Email)的方法的服务类。
class MyService {
public Document getDoc(){...}
}
所以在我的控制器,我想通过显示为MyService返回的文档,我希望它使用的字母的电子邮件和其他视图中显示。 控制器如何知道哪个文档视图被调用? letterView或emailView ?.
我经常在控制器上做一个if语句来检查服务层收到的Document的类型......但是我不认为这是从OOP的角度来看最好的方法,如果我实现了一些布尔方法Document.isLetter(),Document.isEmail()的解决方案本质上是相同的。
另一件事是以某种方式将视图选择委托给文档。例如:
class MyController {
public View handleSomething() {
Document document = myService.getDocument();
return document.getView();
}
}
但是,omg,为什么我的模型对象必须对视图有所了解?
任何toughts赞赏:)
如果可以的话,我会投票两次。非常好的答案。 – 2010-02-16 21:07:36