例如,我需要构建具有元素的对象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中怎么办?我不知道此列表中每个元素的真实类型,我应该使用魔术来检测它。
您能告诉我在这种情况下需要使用的设计模式吗?

最佳答案

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

关于java - 如何存储具有不同行为的相似对象?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/55170851/

10-12 02:50