单一责任原则指出“班级应该有一个改变的理由”。
在MVC模式中,Controller的工作是在视图和模型之间进行中介。它为View提供了一个界面,以报告用户在GUI上进行的操作(例如,允许View调用controller.specificButtonPressed()
),并且能够在Model上调用适当的方法,以操纵其数据或调用其操作(例如model.doSomething()
) 。
这意味着:
- 控制器需要了解GUI,以便为“视图”提供合适的界面来报告用户操作。
- 它还需要了解模型中的逻辑,以便能够在模型上调用适当的方法。
这意味着有两个更改的原因:GUI的更改和商务逻辑的更改。
如果GUI发生更改,例如添加了新按钮,则控制器可能需要添加新方法,以允许视图报告用户对该按钮的按下情况。
而且,如果模型中的业务逻辑发生了变化,则控制器可能必须进行更改才能在模型上调用正确的方法。
因此,控制器有两个可能的变化原因。它会破坏SRP吗?