- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我有一个简单的例子:
用户从日历中选择一个日期,然后在标签中设置该日期。当没有日期或选择了无效日期时,必须放置一个占位符。
我的问题是,这些整洁架构方法中哪种更好?
1) 从 Presenter -> View 发送一个 Date 对象,对象可以为 null。 View 决定日期是否为空,放置占位符文本,如果不是,则对其进行格式化。
View 完全根据收到的 Date 决定界面如何绘制
2)Presenter将格式化后的Date字符串发送给View,但是如果为null,View设置占位符。Presenter 将值格式定义为业务规则,但 View 决定数据如何以图形方式显示,因此 View 决定占位符文本和将被更改的组件。假设 Interface 可能会更改为 f.e.占位符放在另一个标签中,日期字段留空
3) Presenter 指示 View 设置日期文本和设置占位符文本(只有 View 知道,因为它是静态文本)。View 接收到具体要做的事情。 Presenter 确切地知道 View 有哪些组件并控制它们。但静态文本是一个界面组件,因此 View 决定设置哪个占位符文本。
4) Presenter 完全定义了UI中将绘制的内容,View 只是一个连接到 UI 组件的层,Presenter 完全或大部分知道 View 是如何绘制的
对我来说,Presenter 应该只管理来自 View 的整体输入和输出事件,而将全部责任留给 View 来决定如何绘制事物、使用哪些格式甚至如何检索输入,这样如果 UI 发生变化,主屏幕我/o 用例将在 Presenter 中保持有效。
但是我看到代码示例为演示者提供了更多控制权,而 UI 仅仅是绘制元素和捕获用户输入的框架方式。
最佳答案
你可以为这 4 个中的任何一个争论,你真正想要的是一旦你选择了一个代码库的一致性。
我个人会选择#3,它为演示者提供了最多的控制权,不允许在 View 中使用条件逻辑,并且就像你说的那样,最大限度地分离了 UI 与演示者,允许交换 UI 而没有更改为演示者。
即两种方法
Presenter.showDateSelected(long dateTimeSelectedInMillis)
Presenter.showDateSelectedIsInvalid()
当您真正知道 null 的含义(无效日期)时,永远不要传递 null,因为当您总是想显式时,您是隐式的。
上面我选择了传递一个原语,但是传递一个 Date 对象也有争议,它只是与你的平台相关,或者你可以创建自己的 View Domain Date 对象,同样你有多种选择Presenter 与 View 交互。
您上面的所有选择都是 CleanArchitecture 的一种风格,而使它最整洁的是您决策选择的一致性和清晰度。
关于android - 整洁的架构——简单的 View 逻辑应该在 Presenter 上还是在 View 上?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57365739/
我正在使用这种代码: document.write("foo 使用 HTML tidy 后,表格外的 script 标签被移除,因此破坏了页面布局。我
我正在为我的网格系统使用 Bourbon 的 Neat 库。 我有这样的代码: section { @include outer-container; aside { @include spa
我有三个文件。 header.php index.php footer.php 头文件包含来自至 索引文件包含页面内容页脚文件包含 至 它们一起包含一个带有 PHP 的普通 HTML 文件 当我使用
我有一个格式有点乱的 Objective-C 代码库。有没有办法让 Xcode 重新格式化整个项目以符合编码标准(即正确缩进、空格与制表符等)?是否有其他工具可以完成此任务? 最佳答案 去壳化:htt
我试图自己实现整洁,使用原始论文但被卡住了。 假设在上一代我有以下物种: Specie 1: members: 100 avg_score: 100 Specie 2: memb
我正在尝试整理我的一些 SKScene 代码。目前我有大约 11 个对 SKNode 的引用(有些是包含子节点的层)。这些节点及其子节点被类频繁访问。我考虑这样做的方式是: 将所有 SKNode 子类
Notepad++ 的 HTML Tidy 坏了吗?除了 Tidy(第一个)之外,所有命令都不起作用。他们不显示任何消息,即使选择了所有文本。我真的需要 Tidy 才能工作,还是它只是最新版本 N++
有没有一种方法可以不使用 rowwise() 来创建 key? 非常感谢任何指针。 df % rowwise %>% mutate(key=paste(sort(c(grp1, grp2)), col
我正在尝试使用作为 PHP (http://www.php.net/manual/en/book.tidy.php) 一部分的 HTML Tidy 实现来重新格式化大量 HTML。我遇到了一个问题,其
我为 Sublime Text 2 安装了 phptidy 插件,并尝试用它来清理一些丑陋的代码,比如 $tdt="
我在 Windows 的命令行环境中使用 HTML Tidy。我需要强制将一些 html 文件转换为 xml,即使有错误也是如此。 我执行以下步骤: 创建文件“conf.txt”,其内容为: 强制输出
我正在重写一个使用 Bourbon 的“旧”React 原型(prototype),它还在 gulpfile 中使用 gulp-sass 来注入(inject)节点整洁的依赖项: var sassOp
我正在创建一个供个人使用的 jQuery Accordion 插件。 我的主要目标是拥有 super 简洁的 JS 代码和 HTML 结构。 这就是我已经走了多远 http://jsfiddle.ne
我正在测试 Bourbon Neat,我在一个外容器中有两列,我希望这些列的高度相等(与最高的列一样高)。在短列上使用 @include fill-parent 不起作用,它只会使它与外部容器一样宽。
大多数时候在 repos 中,我们看到一个 PR,然后是那个 PR 的 merge 提交,它只是说“Merged pull request #XXX from ...”。 但最近,我看到了一个紧凑的版
我正在使用 Neat 的 12 列网格。该页面由延伸整个网格宽度的部分组成。部分背景与页面背景不同: 如您所见,粉红色部分的左侧与网格边缘齐平。我想要的是该部分的左侧超出网格几个雷姆。 但是,如果我添
只是出于好奇而提出的简单问题。 类上的多个方法需要使用字符串流,或者特别是 ostringstream。 1) 有一个 stringstream 变量作为类成员,然后在使用它之前清除它,即 msg.s
我是波旁/整洁的新手。我有一个关于嵌套的问题:我希望红色框填充整个宽度,而彼此之间不要有排水沟。当在其上使用“@include omega”时,第一个框将删除其右边距,但是右边的框仍具有边距,并且不会
GWT(Google Web Toolkit)是否有一个功能可以漂亮地打印小部件的 html 输出? (如果问题措辞不当,我深表歉意——我不是 GWT 开发人员,但我们的开发人员声称没有办法做到这一点
我是一名优秀的程序员,十分优秀!