设计模式-命令模式

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

命令模式将多组功能包装起来,以对象形式调用内部的方法

Cook类就是指多组功能中的其中一组功能

java 复制代码
public class Cook {
    public void makeFriedRice() {
        System.out.println("厨师正在做炒饭。");
    }

    public void makeNoodles() {
        System.out.println("厨师正在做面条。");
    }
}

不同的命令对象将功能封装起来

java 复制代码
public interface Command {
    void execute();
}
java 复制代码
public class OrderFriedRiceCommand implements Command{

    private Cook cook;

    public OrderFriedRiceCommand(Cook cook) {
        this.cook = cook;
    }

    @Override
    public void execute() {
        cook.makeFriedRice();
    }
}
java 复制代码
public class OrderNoodlesCommand implements Command{
    private  Cook cook;

    public OrderNoodlesCommand(Cook cook) {
        this.cook = cook;
    }

    @Override
    public void execute() {
        cook.makeNoodles();
    }
}

调用者,调用不同封装起来的对象

java 复制代码
public class Waiter {
    private Command command;

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

    public void placeOrder() {
        if (command!= null) {
            command.execute();
        }
    }
}

测试

java 复制代码
public class Main {
    public static void main(String[] args) {
        Cook cook = new Cook();
        OrderFriedRiceCommand orderFriedRiceCommand = new OrderFriedRiceCommand(cook);
        OrderNoodlesCommand orderNoodlesCommand = new OrderNoodlesCommand(cook);
        Waiter waiter = new Waiter();
        waiter.setCommand(orderNoodlesCommand);
        waiter.placeOrder();
        waiter.setCommand(orderFriedRiceCommand);
        waiter.placeOrder();
    }
}

。。。。怎么说呢,感觉有点鸡肋,他把好几个对象中的方法,提取出来集合到一个对象中,如果集合中需要添加其他对象的方法,就又得再修改。虽然解耦了调用方和接受方,但是随着功能越来越复杂类会越来越多

相关推荐
敲代码的 蜡笔小新15 小时前
【行为型之命令模式】游戏开发实战——Unity可撤销系统与高级输入管理的架构秘钥
unity·设计模式·架构·命令模式
m0_5557629015 小时前
D-Pointer(Pimpl)设计模式(指向实现的指针)
设计模式
小Mie不吃饭15 小时前
【23种设计模式】分类结构有哪些?
java·设计模式·设计规范
范纹杉想快点毕业1 天前
以项目的方式学QT开发(三)——超详细讲解(120000多字详细讲解,涵盖qt大量知识)逐步更新!
c语言·开发语言·c++·qt·mysql·算法·命令模式
君鼎1 天前
C++设计模式——单例模式
c++·单例模式·设计模式
敲代码的 蜡笔小新1 天前
【行为型之中介者模式】游戏开发实战——Unity复杂系统协调与通信架构的核心秘诀
unity·设计模式·c#·中介者模式
令狐前生1 天前
设计模式学习整理
学习·设计模式
敲代码的 蜡笔小新1 天前
【行为型之解释器模式】游戏开发实战——Unity动态公式解析与脚本系统的架构奥秘
unity·设计模式·游戏引擎·解释器模式
JANYI20181 天前
嵌入式设计模式基础--C语言的继承封装与多态
java·c语言·设计模式
敲代码的 蜡笔小新2 天前
【行为型之观察者模式】游戏开发实战——Unity事件驱动架构的核心实现策略
观察者模式·unity·设计模式·c#