鉴于 View 上有文件选择小部件并且 Controller 需要处理选择文件的事件,我应该编写 Controller 方法:
public void fileSelected(String filePath){
//process filePath
}
或者
public void fileSelected(){
String filePath = view.getSelectedFilePath();
//process filePath
}
第一种方法似乎在 C 和 V 之间引入了较少的耦合:C 不知道在处理给定事件时 C 到底需要什么数据。
但是它需要创建很多类似于
getSelectedFile
的冗长方法。在 V 侧。另一方面,在比示例更复杂的情况下,第二种方法可能会导致困惑的 Controller 方法(要传递的数据比仅
filePath
要多得多)。根据您自己的经验,您更喜欢哪种方法?
最佳答案
第一种方法是我最喜欢的。唯一的区别是我宁愿使用一个对象(如 Mario 建议的那样)将参数传递给该方法。这样,当您添加或删除某些参数时,方法的签名不会改变。少耦合总是好的:)
还有一件事:
如果您想尝试第二种解决方案,我建议使用 ViewFactory 从 Controller 中删除 View 逻辑。
关于model-view-controller - Controller 方法应该带参数吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13098287/