知识卡片

应用控制器的作用与"是否需要它"的测试法

普通读书笔记卡

内容

“控制器”一词在MVC语境外还有第二种常见用法:应用控制器,它是插在表现层对象和领域对象之间的一个中间过渡层,专门负责处理应用程序的流程——决定各个视图/屏幕该按什么次序出现。它既可以算作表现层的一部分,也可以看成介于表现层与领域层之间的独立隔离层;如果设计得独立于任何特定表现层,还能在多个表现层之间复用(前提是不同表现层共享相同的基本流程和导航逻辑,最好还是为每种表现层各配一套流程更稳妥)。并非所有系统都需要应用控制器:如果屏幕之间的顺序和导航关系本身就有丰富的逻辑(比如某些屏幕必须走完前置步骤才能进入),或者网页与领域行为之间没有简单的一一映射,应用控制器就很有价值;但如果用户可以以任意顺序自由查看任意屏幕,应用控制器大概率是多余的。判断要不要引入应用控制器有一个简洁的测试法:如果屏幕流转的主导权在”机器”手里(系统按既定逻辑推进流程),就需要应用控制器;如果主导权在”用户”手里(用户想去哪个屏幕就去哪个),就不需要。

参考来源

- 位置:《企业应用架构模式》第一部分"表述"之"第4章 Web表现层"(源文件:_epub-src/OEBPS/Text/000027.html) - 结论依据:原文说明"应用控制器的目的是处理应用程序流,决定视图应该按什么次序出现……如果你的系统在屏幕的次序和屏幕之间的导航上有丰富的逻辑关系,那么这些应用控制器非常有用……可以进行这样的测试:如果机器处在屏幕流的控制下,那么你就需要应用控制器;如果这台机器是在用户的控制下,你就不需要应用控制器",直接支撑本卡结论。 - 原始内容:可以进行这样的测试:如果机器处在屏幕流的控制下,那么你就需要应用控制器;如果这台机器是在用户的控制下,你就不需要应用控制器。