设计模式之命令模式11

设计模式之命令模式11

背景

正常做一个项目,有客户,需求组,美工组,开发组。然后项目经理负责统筹整个项目的进度和安排。

这时,客户找到项目经理说任何一个事情,增加需求,删除需求,增加页面,修改页面等等。这样就造就了命令模式

类图

设计模式之命令模式

代码实现

首先要定义各个组的抽象类

public abstract class Group {

    public abstract void add();

    public abstract void delete();

    public abstract void change();

    public abstract void find();

    public abstract void plan();

}

需求组继承抽象的组

public class RequireGroup extends Group{

    @Override
    public void add() {
        System.out.println("需求组增加功能");
    }

    @Override
    public void delete() {
        System.out.println("需求组删除功能");
    }

    @Override
    public void change() {
        System.out.println("需求组修改功能");
    }

    @Override
    public void find() {
        System.out.println("找到需求组开会");
    }

    @Override
    public void plan() {
        System.out.println("需求组设定计划");
    }

}

美工组

public class PageGroup extends Group{

    @Override
    public void add() {
        System.out.println("美工组增加功能");
    }

    @Override
    public void delete() {
        System.out.println("美工组删除功能");
    }

    @Override
    public void change() {
        System.out.println("美工组修改功能");
    }

    @Override
    public void find() {
        System.out.println("找到美工组开会");
    }

    @Override
    public void plan() {
        System.out.println("美工组设定计划");
    }

}

开发组

public class CodeGroup extends Group{

    @Override
    public void add() {
        System.out.println("开发组增加功能");
    }

    @Override
    public void delete() {
        System.out.println("开发组删除功能");
    }

    @Override
    public void change() {
        System.out.println("开发组修改功能");
    }

    @Override
    public void find() {
        System.out.println("找到开发组开会");
    }

    @Override
    public void plan() {
        System.out.println("开发组设定计划");
    }

}

定义一个抽象的命令,让各个具体的命令所继承。而项目经理也将调用这个。

public abstract class Command {

    protected RequireGroup requireGroup = new RequireGroup();

    protected PageGroup pageGroup = new PageGroup();

    protected CodeGroup codeGroup = new CodeGroup();

    public abstract void execute();

}

增加需求的命令

public class RequireAddCommand extends Command{

    @Override
    public void execute() {

        super.requireGroup.find();

        super.requireGroup.plan();

        super.requireGroup.add();

    }

}

删除页面的命令

public class PageDeleteCommand extends Command{

    @Override
    public void execute() {

        super.pageGroup.find();

        super.pageGroup.plan();

        super.pageGroup.delete();

        super.codeGroup.delete();

    }

}

项目经理来统筹协调各个方面

public class Invoker {

    private Command command;

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

    public void action() {
        this.command.execute();
    }

}

客户告知项目经理,要先增加需求,再删除页面

public class Client {

    public static void main(String[] args) {
        Invoker invoker = new Invoker();
        invoker.setCommand(new RequireAddCommand());
        invoker.action();
        System.out.println();

        invoker.setCommand(new PageDeleteCommand());
        invoker.action();

    }

}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值