这是使用instanceof的情况?

时间:2012-03-11 14:15:33

标签: java instanceof

我有一个名为Document的课程,可以PageImage进行扩展。对于每一个我在数据库中有一个插入方法。 PageImage的插入内容包含Document的插入内容。

我怀疑的是,确定调用哪种方法的方法是首先验证类,如下所示:

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)

2 个答案:

答案 0 :(得分:8)

我认为最好在Document类中实现insert方法,并在扩展它的类中使用适当的方法覆盖它。然后,只需致电doc.insert();

答案 1 :(得分:4)

如果您将来计划添加更多扩展Document的类型并添加更多操作而不仅仅是insert(),我建议实现Visitor设计模式。否则,请遵循Bynyamin Sharet的建议。