Как хранить похожие объекты с разным поведением? - PullRequest
1 голос
/ 14 марта 2019

Например, мне нужно построить объект 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() метод ..

Но что, если я хочу сохранить эту веб-страницу в БД? Я не знаю реального типа каждого элемента в этом списке, и я должен использовать магию, чтобы обнаружить его. Можете ли вы сказать мне шаблон дизайна, который мне нужно использовать в этой ситуации?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...