我有一个名为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