javaJava随笔-生活工作点滴

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

上一篇下一篇

猜你喜欢

热点阅读