我有一个简单的例子:
用户从日历中选择一个日期,然后在标签中设置该日期。当没有日期或选择了无效日期时,必须放置一个占位符。
我的问题是,这些清洁架构方法中哪一种更好?
1) 从 Presenter -> View 发送一个 Date 对象,对象可以为空。View 决定 date 是否为空,放置占位符文本,如果不是,格式化它。
View 完全根据收到的 Date 决定如何绘制界面
2)Presenter将格式化后的Date字符串发送给View,但如果为null,View设置占位符。 Presenter 将值格式定义为业务规则,但 View 决定数据如何以图形方式显示,因此 View 决定占位符文本和将被更改的组件。假设接口可能更改为 fe 占位符放置在另一个标签中并且日期字段留空
3) Presenter 指示 View 设置日期文本和设置占位符文本(只有 View 知道,因为它是静态文本)。 视图接收具体做什么事情。Presenter 确切地知道 View 有哪些组件并控制它们。但是静态文本是一个界面组件,因此 Views 决定设置哪个占位符文本。
4) Presenter 完全定义了将在 UI 中绘制的内容, View 只是一个连接 UI 组件的层,Presenter 确切或大部分知道 View 是如何绘制的
对我来说,Presenter 应该只管理来自 View 的整体输入和输出事件,让 View 对如何绘制事物、使用哪些格式甚至如何检索输入负全部责任,这样如果 UI 发生变化,主屏幕 i/o 使用案例将在 Presenter 中保持有效。
然而,我已经看到了给演示者更多控制权的代码示例,而 UI 只是绘制元素和捕获用户输入的框架方式。