Ken*_*Lee 7 oop design-patterns
我正在学习命令设计模式.据我所知,总是与命令模式相关的四个术语是命令,接收器,调用者和客户端.
具体的命令类有一个execute()方法,调用者有几个命令.调用者决定何时调用execute()命令的方法.
当execute()方法被调用时,它会调用接收器的方法.然后,接收器完成工作.
我不明白为什么我们需要接收器类?我们可以在内部工作execute(),似乎接收器类是多余的.
预先感谢.
设计模式用于解决软件问题.
在尝试理解解决方案之前,您必须先了解问题(在本例中为Command模式)
命令模式适用的问题是在对象A(客户端)调用对象B(接收器)中的方法的上下文中,因此接收器是问题的一部分,而不是解决方案的一部分.
命令模式提供的解决方案或想法是在对象(Command)中封装从A到B的方法调用,实际上这接近于正式模式定义.当您将请求作为对象进行管理时,您可以解决某些问题或实现某些功能.(你还需要其他一些叫做Invoker的作品)
此列表可以为您提供一些很好的示例,说明哪些功能适合命令模式.
注意:Comamnd模式不是关于解耦的必要条件,实际上是最常见的模式实现示例,客户端需要创建接收器的新实例,所以我们不能在这里谈论解耦.
想象一个可以做几件事的课,比如Duck,它可以吃和嘎嘎.Duck是这个例子中的接收器.要在此处应用命令模式,您需要能够将吃和嘎嘎声包装到命令中.它们应该是使用execute()方法从Command基类派生的单独类,因为Duck只能有单个execute()方法.因此,EatCommand.execute()呼叫Duck.eat()和QuackCommand.execute()通话Duck.quack().
命令模式的目标是将调用者与接收者分离.
接收器必须完成工作,而不是命令本身,命令只知道接收方法的调用方式,或者命令可以执行其他命令.使用命令模式,调用者不知道命令所期望的是什么.
因此,许多调用者可以重用命令来在接收器上执行相同的操作.
| 归档时间: |
|
| 查看次数: |
2795 次 |
| 最近记录: |