Java 使用复杂模型实现MVC的正确方法,无需类型检查和if-else链
我正试图按照MVC体系结构编写一个应用程序,更具体地说是以下方法: 控制员:Java 使用复杂模型实现MVC的正确方法,无需类型检查和if-else链,java,oop,design-patterns,model-view-controller,architecture,Java,Oop,Design Patterns,Model View Controller,Architecture,我正试图按照MVC体系结构编写一个应用程序,更具体地说是以下方法: 控制员: public class Controller{ ... public void newName() { model.setName(name); } public void newFoo() { model.setFoo(foo); } public void newBar() { model.setBar(bar)
public class Controller{
...
public void newName() {
model.setName(name);
}
public void newFoo() {
model.setFoo(foo);
}
public void newBar() {
model.setBar(bar);
}
}
模型:
public class Model{
...
public void setName(String name) {
this.name = name;
update();
}
public void setFoo(String foo) {
this.foo = foo;
update();
}
public void setBar(String bar) {
this.bar = bar;
update();
}
// Update implemented like this:
private void update() {
setChanged();
// calls update(...) on observers
notifyObservers();
}
}
观点:
public class View{
...
public void update(Observable o, Object arg) {
Model model = (Model) o;
fieldName.setText(model.getName());
fieldFoo.setText(model.getFoo());
fieldBar.setText(model.getBar());
}
}
我的问题是,如果我不想同时更新整个视图,就像更新视图中的name、foo和bar一样,我必须进行类型检查或创建if-else链,以测试更新了哪个字段
如果我使用侦听器,我可以为每个字段实现一个具体的方法调用
然而,我觉得这两种方法都有良好的OOP和可修改性/松耦合等缺陷。如果模型中有100个字段,会发生什么?100个单独的if/方法
所以我想我要问的是,在OOP和可修改性方面,只更新update()
中的必填字段而不必更新所有内容的最佳方式是什么
我能用多态性解决这个问题吗
我很抱歉问了这么一个可能很宽泛的问题,但我已经为此挣扎了一段时间,我没有找到任何其他线索,我觉得可以给我一个好的答案,所以我想我应该尝试做我自己的线索。我可能找不到类似的线索,因为我真的不知道该搜索什么。如果我有点不对劲,请原谅 可以使用ID将所有字段封装在集合对象中。在update调用中,需要设置的ID/ID将被传入。然后:
希望能给你一点启发 如果我有点不舒服,请原谅 可以使用ID将所有字段封装在集合对象中。在update调用中,需要设置的ID/ID将被传入。然后:
希望能给你一点启发 如果我有点不舒服,请原谅 可以使用ID将所有字段封装在集合对象中。在update调用中,需要设置的ID/ID将被传入。然后:
希望能给你一点启发 如果我有点不舒服,请原谅 可以使用ID将所有字段封装在集合对象中。在update调用中,需要设置的ID/ID将被传入。然后: