美文网首页javaJava随笔-生活工作点滴
java设计模式-命令模式(command)

java设计模式-命令模式(command)

作者: yiqiquhuxi | 来源:发表于2019-08-06 16:44 被阅读54次

    命令模式:属于行为型模式。

    命令模式,将一个请求封装成一个对象,使你可以用不同的请求对客户进行参数化;对请求排队或记录请求日志,以及支持撤销的操作。    

    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

    相关文章

      网友评论

        本文标题:java设计模式-命令模式(command)

        本文链接:https://www.haomeiwen.com/subject/iqlwdctx.html