【发布时间】:2017-12-09 08:41:52
【问题描述】:
免责声明:我知道有很多关于多态性的问题,但我找不到适合我的问题的答案。如果你的 Google-fu 比我的好,请见谅。
我有一个使用继承的模型,如下例所示。
public abstract class Base {
// ...
}
public class ConcreteA extends Base {
private String someString;
// ...
}
public class ConcreteB extends Base {
private boolean someBool;
// ...
}
我还有一个List<Base>,它由ConcreteAs 或ConcreteBs 的对象组成。
我需要为列表中的每个对象生成一个图形视图,但生成的元素对于ConcreteAs 和ConcreteBs 是不一样的。在上面的示例中,ConcreteA 的视图将是一个文本字段,而 ConcreteB 的视图将是一个复选框。
如何使用 OO 原则实现这一目标?
【问题讨论】:
-
不太清楚“
ConcreteA和ConcreteB的结果元素不同”是什么意思。但总的来说,OO 原则规定 Object 应该主要对它的所有操作负责,包括渲染。所以 OO 原则会规定一个renderTo(Media)方法,但那是它自己的蠕虫罐头的全部负载。所以尝试使用类似专门的渲染器实例,每个都知道如何渲染什么。 -
让我更新问题以使这部分更清晰。
标签: java oop design-patterns polymorphism