java设计模式-命令模式(command)
2019-08-06 本文已影响54人
yiqiquhuxi
命令模式:属于行为型模式。
命令模式,将一个请求封装成一个对象,使你可以用不同的请求对客户进行参数化;对请求排队或记录请求日志,以及支持撤销的操作。
UML图如下:
命令模式UML这里面有几个对象进行说明:
Client:客户端。
Invoker:请求者,用户请求不同的命令。
Command:抽象命令类。
ConcreteCommand:具体的命令类。
Receiver:命令的接收者,也是命令的具体实现。
在这里举个例子:
1:餐馆点餐:客户(Client)进行点餐,把需要的菜品告诉服务员(Invoker),服务员把具体的菜 品记录下来(Command),告诉后台厨师(Receiver)进行制作。
2:小明(Client)拿起遥控器(Invoker),点击开机按钮(Command),电视机(Receiver)接受 命令被打开。
java实现简单命令模式:
命令接受者(Receiver)
receiver抽象命令接口(Comand)
Command具体命令类:(Concrete)
Concrete发起者:(Invoker)
Invoker客户端(Client):
Client上面列子:客户端,命令,和命令操作者实现了解耦,各个命令相互不影响。
命令模式优点:
1:命令被单一化,扩展起来方便,符合单一职责原则。
2:客户端和命令具体执行被解耦,降低了系统耦合性。
以上面提到的列子2为demo(小明打开遥控器)
代码如下:
电视机:(Receiver)
Receiver命令接口:(Command)
Command换台命令:(Concrete)
Concrete播放命令:(Concrete)
Concrete加音量命令:(Concrete)
Concrete遥控器:(Invoker)
Invoker客户端:(Client)
Client输出结果:
结果JDK中命令模式的应用:
java.lang.Runnable