例如,我需要构建具有元素的对象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/