有时我认为Controller和Command是相同的,因为它们都封装了业务逻辑。我能想到的唯一区别是命令必须有一个没有参数的execute()方法,但控制器的execute()方法可以接受参数。或者我错了吗?
答案 0 :(得分:1)
这有点像将苹果与橙子进行比较。从概念上讲,命令是一种设计模式,但控制器是元设计模式的一部分。这意味着它们不是互斥的或包容性的。控制器可以由命令(甚至命令集合)组成。 MVC有很多种,控制器在许多方面的职责略有不同,但通常控制器严格用于将用户输入转换为应用程序数据(模型)。在大多数MVC版本中,它还负责在模型更改时更新视图。 通常控制器是长寿的。只要存在某个模型和/或视图,它们就存在,或者如果它们具有视图/模型注册系统,它们甚至比它们更长。
另一方面,命令在理论上是无状态的,它做它的事情然后被释放用于垃圾收集。实际上,命令的执行时间可能比执行方法的执行时间长一些,这样可以更轻松地实现异步操作。但命令应始终严格关注一个且只有一个任务,当它完成时它们应该消失。答案 1 :(得分:0)