如何以Wicket-ish的方式处理复合模式?

时间:2015-08-24 09:36:06

标签: java wicket composite wicket-6

在任何Wicket转发器组件中,基于模型对象类使用不同组件类的常见模式是什么?我目前的方法是这样的,但我想有一种更好的解决方案:

BaseClass
|- AClass
|- BClass
`- CClass


protected void populateItem(Item<BaseClass> item) {
    BaseClass obj = item.getModelObject();
    if (obj instanceof AClass) {
        item.add(new APanel("content", Model.of((AClass) obj)));
    } else if (obj instanceof BClass) {
        item.add(new BPanel("content", Model.of((BClass) obj)));
    } else if (obj instanceof CClass) {
        item.add(new CPanel("content", Model.of((CClass) obj)));
    }
}

1 个答案:

答案 0 :(得分:2)

您可以使用主页外部的工厂模式。工厂中的代码看起来与您已有的代码类似。

protected void populateItem(Item<BaseClass> item) {
  item.add(PanelFactory.getPanel("content", item.getModelObject());
}