设计模式java如何扩展违反openclosed原则的应用程序
我试图扩展用Jelly&;编写的web应用程序的功能;爪哇
场景:应用程序有两个默认的硬编码标签:label1&label2
在索引下。我们有果冻
<f:entry title="${%Label1}"
field="label1">
<f:textbox name="label1"
value="${it.label1}"
default=""/>
</f:entry>
<f:entry title="${%label2}"
field="label2">
<f:textbox name="label2"
value="${it.label2}"
default=""/>
</f:entry>
正如您所见,标签本身和值都是硬编码的
在Java类中,每个标签都有自己分配的变量:
private Integer label1;
private Integer label2;
public Integer getlabel1() {
return label1;
}
@DataBoundSetter
public void setlabel1(Integer label1) {
this.label1= label1;
}
public Integer getlabel2() {
return label2;
}
@DataBoundSetter
public void setlabel2(Integer label2) {
this.label2= label2;
}
请记住,这些值是通过反射持久化的(index.jelly中的label1字段与.java文件中的databoundsetter匹配)
假设我想添加无限多个标签,既然我不知道自己有多少个标签,就不能为每个标签创建setter,那么我怎么能持久化它们呢
# 1 楼答案
具有状态和行为的不可变对象:
然后可以创建多个标签