根据对象(型号)的类型,需要打开所需的窗口。该模型不应具有用户界面的知识。什么模式解决了这个问题?
答案 0 :(得分:0)
Visitor Pattern'可能就是你想要的。
'Model'类有以下方法:
public class MyClassA {
...
public void accept(Visitor v) {
v.visit(this);
}
}
public class MyClassB {
...
public void accept(Visitor v) {
v.visit(this);
}
}
public class MyClassC {
...
public void accept(Visitor v) {
v.visit(this);
}
}
public class MyClassD {
...
public void accept(Visitor v) {
v.visit(this);
}
}
'访客'然后有一系列名为的方法:
public void visit(MyClassA instance){...}
public void visit(MyClassB instance){...}
public void visit(MyClassC instance){...}
public void visit(MyClassD instance){...}
这利用了多态性,并能够根据输入类动态调度适当的方法。
这允许您的模型类不知道什么算法正在“处理”它(访问它),但是使用所有设计模式,这会在访问者类和它可以支持“访问”的类之间创建耦合。 。所以这里有一个权衡,允许模型更简单/不知道它连接到什么。