Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/design-patterns/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Design patterns 使用什么设计模式?连接性和UI模型_Design Patterns - Fatal编程技术网

Design patterns 使用什么设计模式?连接性和UI模型

Design patterns 使用什么设计模式?连接性和UI模型,design-patterns,Design Patterns,根据对象(模型)的类型,需要打开所需的窗口。模型不应该了解用户界面。什么样的模式可以解决这个问题?这个“可能”就是你想要的 “模型”类具有以下方法: public class MyClassA { ... public void accept(Visitor v) { v.visit(this); } } public class MyClassB { ... public void accept(Visitor v) {

根据对象(模型)的类型,需要打开所需的窗口。模型不应该了解用户界面。什么样的模式可以解决这个问题?

这个“可能”就是你想要的

“模型”类具有以下方法:

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){...}
这利用了多态性和根据输入类动态调度适当方法的能力


这允许您的模型类不知道什么算法正在“处理”它(访问它),但对于所有设计模式,这会在访问者类和它可以支持“访问”的类之间创建耦合。因此,这里有一个折衷方案,即允许模型更简单/不知道它连接到什么

我不确定这是一个讨论这个问题的合适论坛,这个问题也应该扩大。也许您正在寻找MVC、MVP或MVVM?不,这些设计模式不适合。