Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/user-interface/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
Java 从GUI隐藏方法_Java_User Interface_Model View Controller - Fatal编程技术网

Java 从GUI隐藏方法

Java 从GUI隐藏方法,java,user-interface,model-view-controller,Java,User Interface,Model View Controller,我正在用java实现observer模式,以将模型类与GUI分离。 问题是,每次调用update方法时,模型实例都作为参数给出。这意味着,GUI可以调用不应从GUI调用的模型对象上的方法。 如何避免GUI操作模型对象?为了实现这一点,您需要引入另一层,该层将获取模型对象并将其转换为DTO,然后返回GUI,反之亦然。一种用于许多项目的数据访问设计模式 更多信息 希望这能给你一个想法。 为模型类创建一个接口,该接口仅定义GUI可以调用的方法(即,当前由模型类实现的、只应由GUI看到的方法的子集) 让

我正在用java实现observer模式,以将模型类与GUI分离。 问题是,每次调用update方法时,模型实例都作为参数给出。这意味着,GUI可以调用不应从GUI调用的模型对象上的方法。
如何避免GUI操作模型对象?

为了实现这一点,您需要引入另一层,该层将获取模型对象并将其转换为DTO,然后返回GUI,反之亦然。一种用于许多项目的数据访问设计模式

更多信息

希望这能给你一个想法。

  • 为模型类创建一个接口,该接口仅定义GUI可以调用的方法(即,当前由模型类实现的、只应由GUI看到的方法的子集)
  • 让模型类实现这个新接口,这应该很简单,因为方法已经在那里实现了
  • 在传递模型的方法中,将参数类型从模型的类更改为模型现在实现的新接口

您可以使用Java包让控制器访问GUI无权访问的方法。如果您决定使用包装器对象,一些IDE可以帮助您创建它。例如,在eclipse
source>create delegate methods
中,将复制所有方法,将调用转发给内部组合对象。然后你只需删除你不想公开的其他内容。