Byr*_*ahl 10 model-view-controller single-responsibility-principle solid-principles
维基百科以这种方式描述单一责任原则:
单一责任原则规定每个对象应该只有一个责任,并且该责任应该由类完全封装.其所有服务应与该责任严格一致.
MVC中控制器的传统使用似乎导致程序员违反了这一原则.拿一个简单的留言簿控制器和视图.控制器可能有两个方法/操作:1)Index()和2)Submit().Index()显示表单.Submit()处理它.这两种方法是否代表两种不同的责任?如果是这样,单一责任如何进入?
是的,它确实.
如果您想要遵循SRP,您可以将Controller分解为Dispatcher和Actions; Dispatcher将控制权调度到其操作,在编译时(C++模板)或运行时(Java XML,无论如何),您将组成Dispatchers和Actions.
为什么我们不经常看到这个?因为控制器通常是"临时"实现,所以叶级具体类不是通用的,也不是要子类化的.在这里,该类更多地用于方便地对代码进行分组,这些操作几乎肯定是非公开的(可能是私有的,可能是受保护的),"仅仅是"内部实现细节.
选择如何决定要发送的行动,可能行动的数量和多样性,选择很高,调度和行动是紧密耦合的.因此在实践中,将代码放在一个地方通常更容易.
| 归档时间: |
|
| 查看次数: |
1054 次 |
| 最近记录: |