[置顶] 欢迎您。今天是2022年11月30日。

控制器模式(Controller)是GRASP模式中解决事件处理职责问题的模式。

问题:

在UI层之外,应该由哪个类来处理(控制)系统操作(事件)呢?或者说,当触发一个系统事件时,应该把对事件的处理职责分配给UI层之外的哪个类呢?

Controller模式所提倡的解决方案:

把系统事件的处理职责分配给Controller(控制器)类。

担当Controller(控制器)类角色的候补类可能为:

  1. 系统全体,设备,子系统等的表现类(Facade Controller)
  2. 系统事件发生的用例的控制类,通常被命名为Handler,Coordinator,Session等(用例或Session的控制器)。整个系统事件都使用同一个控制器。

Controller模式相当于著名的MVC设计模式的C(Controller)部分。

类似于J2EE核心模式中的Front Controller模式(我们会在其它文章中介绍Front Controller模式)。

Controller模式提倡用一个专门的类来处理所有的系统事件。或者说Controller模式把所有系统事件的处理职责分配给一个专门的类集中处理。

应用Controller模式的好处:

应用Controller模式的系统,对系统事件进行集中处理,所以:

  1. 防止同类职责的分散。满足高内聚,低耦合原则。
  2. 有利于共通处理(前处理,后处理等)。
  3. 变化的高适应能力。能够把变化的修改范围控制在最小范围(控制器)之内。

Controller模式的应用例

MVC模式。

您可能也喜欢

GRASP是General Responsibility Assignment Software patterns(通用职责分配软件模式)的简称,它的核心思想是“职责分配(Responsibility Assignment)”。GRASP提出了几个基本原则,用来解决面向对象设计的一些问题。

信息专家模式(Information Expert)是GRASP模式中解决类的职责分配问题的最基本的模式。

创建者模式(Creator)是GRASP模式中解决类的实例的创建职责问题的模式。

二维码
摄像头