我有這個懷疑很長一段時間...希望任何人都能照亮我。多態性和多層應用程序
假設我在模型中有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