控制器模式(Controller)是GRASP模式中解决事件处理职责问题的模式。
问题:
在UI层之外,应该由哪个类来处理(控制)系统操作(事件)呢?或者说,当触发一个系统事件时,应该把对事件的处理职责分配给UI层之外的哪个类呢?
Controller模式所提倡的解决方案:
把系统事件的处理职责分配给Controller(控制器)类。
担当Controller(控制器)类角色的候补类可能为:
- 系统全体,设备,子系统等的表现类(Facade Controller)
- 系统事件发生的用例的控制类,通常被命名为Handler,Coordinator,Session等(用例或Session的控制器)。整个系统事件都使用同一个控制器。
Controller模式相当于著名的MVC设计模式的C(Controller)部分。
类似于J2EE核心模式中的Front Controller模式(我们会在其它文章中介绍Front Controller模式)。
Controller模式提倡用一个专门的类来处理所有的系统事件。或者说Controller模式把所有系统事件的处理职责分配给一个专门的类集中处理。
应用Controller模式的好处:
应用Controller模式的系统,对系统事件进行集中处理,所以:
- 防止同类职责的分散。满足高内聚,低耦合原则。
- 有利于共通处理(前处理,后处理等)。
- 变化的高适应能力。能够把变化的修改范围控制在最小范围(控制器)之内。
Controller模式的应用例
MVC模式。
最新评论