Например, мне нужно построить объект WebPage, в котором есть элементы.
class WebPage {
List<Element> elements;
}
хорошо, но я думаю, что Элемент может быть <input>
или <select>
.
Таким образом, я должен сделать интерфейс
interface Element{
RenderedElement render();
}
и реализовать классы Input и Select на его основе.
class Input implements Element {
String name;
String value;
RenderedElement render() { ... }
}
class Select implements Element {
String name;
List<Option> options;
RenderedElement render() { ... }
}
и хорошо, нет проблем, я даже могу нарисовать любой элемент из WebPage, потому что у меня есть render()
метод ..
Но что, если я хочу сохранить эту веб-страницу в БД? Я не знаю реального типа каждого элемента в этом списке, и я должен использовать магию, чтобы обнаружить его.
Можете ли вы сказать мне шаблон дизайна, который мне нужно использовать в этой ситуации?