美文网首页
设计模式(10)-命令模式

设计模式(10)-命令模式

作者: zhglance | 来源:发表于2019-06-24 16:14 被阅读0次

命令模式(Command Pattern)将一个请求封装为一个对象,这样用不同的请求对客户进行参数化。降低了系统耦合度,而且新的命令可以很容易添加到系统中去,但是要避免过多的具体命令。

一、需求举例:

客户经理(client)发送需求开发给软件工程师,工程师(Receiver)负责开发项目.

二、类图

三、代码实例

1.命令接受者:SoftEngineerReceiver

package com.lance.command;

public class SoftEngineerReceiver {

    public void develop() {
        System.out.println("SoftEngineer develop program.");
    }
}

2.命令父类:Command

package com.lance.command;

public abstract class Command {
    protected SoftEngineerReceiver softEngineerReceiver;

    public Command(SoftEngineerReceiver softEngineerReceiver) {
        this.softEngineerReceiver = softEngineerReceiver;
    }

    abstract public void exe();
}

3.命令实现类:CommandImpl

package com.lance.command;

public class CommandImpl extends Command {
    public CommandImpl(SoftEngineerReceiver softEngineerReceiver) {
        super(softEngineerReceiver);
    }

    @Override
    public void exe() {
        System.out.println("Command exe develop");
        softEngineerReceiver.develop();
    }


}

4.产品经理类:ProductManagerInvoker

package com.lance.command;

public class ProductManagerInvoker {

    private Command command;

    public void setCommand(Command command) {
        this.command = command;
    }

    public void invokeCmd() {
        System.out.println("ProductManager invoke Cmd exe.");
        command.exe();
    }

}

5.主类:CommandPattern

package com.lance.command;

public class CommandPattern {

    public static void main(String[] args) {

        System.out.println("==========start==========");

        SoftEngineerReceiver softEngineerReceiver = new SoftEngineerReceiver();
        Command command = new CommandImpl(softEngineerReceiver);

        ProductManagerInvoker productManagerInvoker = new ProductManagerInvoker();
        productManagerInvoker.setCommand(command);
        productManagerInvoker.invokeCmd();

        System.out.println("==========end==========");

    }
}

输出结果:

==========start==========
ProductManager invoke Cmd exe.
Command exe develop
SoftEngineer develop program.
==========end==========

相关文章

网友评论

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

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