У меня есть класс под названием Document
, который может быть продлен на Page
или Image
. Для каждого из них у меня есть метод insert в базе данных. Вставка для 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)
.
Я понимаю ваше решение, но я не знаю, является ли это лучшим вариантом, потому что я разделяю все слои (просмотр, TO, данные, ядро и т. Д.). Если я использую этот путь, это нарушит эту организацию, но это будет работать. Спасибо. –