我有一個名爲Document
的類,可以通過Page
或Image
進行擴展。對於每一個我有一個數據庫中的插入方法。 Page
和Image
的插頁包含Document
的插頁。這是使用instanceof的情況嗎?
我的疑問是,如果確定什麼方法將被調用的方法是先驗證類,像這樣:
if (doc instanceof Document){
insertDoc(doc);
}
if (doc instanceof Page){
insertPage(doc);
}
if (doc instanceof Image){
insertImage(doc);
}
或者有另一種方式,因爲我總是聽說使用instanceof
不是一個好事情。
編輯:多態性在這種情況下不起作用,對吧?類似於insert(Document doc)
,insert(Page doc)
和insert(Image doc)
。
我理解你的解決方案,但我不知道是否是最好的選擇,因爲我將所有圖層(視圖,TOs,數據,核心等)分開。如果我用這種方式,這將打破這個組織,但它是一種可行的方式。謝謝。 – 2012-03-11 14:34:39