尽管拥有“嵌套”设计模式并不罕见,但在您的情况下却没有必要。借鉴其他答案:
模型
-包含所有真实数据,变量,对象
-知道如何将其存储的数据值设置为新值
-响应订单(方法调用)
-具有方法setPreferences(value1,value2,value3 …);
视图
-是应用程序的IO,仅是输出和输入
-它只能按自身状态运行
-维护局部变量和对象,例如。它具有JButtons,JMenus和int计数器…-
知道如何通知Presenter状态更改
-它的状态对Presenter可见,或通过方法调用显示
-响应命令(方法调用)
-知道如何获取用户的首选项
-具有方法askForPrefs();
-具有方法getPrefState();
Presenter-
响应状态更改
-做出所有决定,告诉其他对象该怎么做(而不是怎么做)
-知道何时需要首选项
-知道从何处获取新首选项以及将其放置在哪里
-具有方法newPrefsAvailable( );
…以从用户那里获得更多信息。对于这些事件,我认为使用Swing视图生成一个新的JDialog窗口是合适的。
Presenter-检查模型,确定需要新的首选项 Presenter-this.myView.askForPrefs(); //告诉视图向用户询问优选值
View.askForPrefs-弹出一个JDialog框,将retVals作为状态更改存储在视图中 View-this.myPresenter.newPrefsAvailable();
演示者-使用this.myModel.setPreferences(this.myView.getPrefState())进行响应;
Model.setPreferences-将存储的值更改为View.getPrefState() Presenter-检查模型-确定首选项是否良好
Presenter-继续
JDialog被视为View的扩展,就像JButton一样,它是View的成员。该模型具有权威的实际首选项值,并且视图具有表示JDialog状态的局部变量。



