题干
(1)以下代码是否有问题,有什么影响?
(2)给出改进
/*按钮构件*/
Class Button{
private Label label;
private List list;
public void change(){
list.update();
label.update();
}
public void update(){...}
/*列表构件*/
Class List{
private Label label;
private Button button;
public void change(){
label.update();
button.update();
}
public void update(){...}
}
/*标签构件*/
Class Label{
...
public void update(){...}
...
}
答:
(1)违背OCP开闭原则:List和Button其中任何一个类的更改都会导致另一个类的更改。原设计类图:
(2)改进方案