如何存储行为不同的相似对象?

时间:2019-03-14 19:44:37

标签: java oop

例如,我需要构建具有元素的对象WebPage。

class WebPage {
    List<Element> elements;
}

好的,但是我认为Element可以是<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()方法。.

但是,如果我想将此WebPage存储在DB中怎么办?我不知道此列表中每个元素的真实类型,我应该使用魔术来检测它。 您能告诉我在这种情况下需要使用的设计模式吗?

1 个答案:

答案 0 :(得分:0)

您可以使用JPA联接表inheritance strategy,它将为相似的属性创建一个表,并为类创建特定的表,甚至,如果您想要更简单的策略,请在其{{3}中使用jackson }并将WebPage对象存储在JSON文件中。