设计模式-命令模式

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

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

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();
    }
}

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

相关推荐
码匠许师傅7 小时前
【设计模式精讲】7.建造者模式(Builder)
设计模式·建造者模式
码匠许师傅7 小时前
【设计模式精讲】6.抽象工厂(Abstract Factory)
c++·设计模式
workflower1 天前
人形机器人灵巧手产业链
人工智能·设计模式·机器人·云计算·无人机
Java后端的Ai之路1 天前
03、Python - 抽象工厂模式
开发语言·python·设计模式·抽象工厂模式·通用智慧
AI人工智能+电脑小能手1 天前
大白话说Java设计模式-45-解释器模式(源码剖析篇)
java·设计模式·解释器模式·源码分析·pattern·spel·javacc
码匠许师傅1 天前
【设计模式精讲】4.单例模式(Singleton)
c++·单例模式·设计模式
雾削木1 天前
2026 编程领域热点知识速览:AI 辅助开发、设计模式实战与嵌入式高效迭代
人工智能·设计模式
AI人工智能+电脑小能手2 天前
大白话说Java设计模式-42-访问者模式(业务实战篇)
java·spring·设计模式·访问者模式·asm·营销规则·数据结构与操作分离
AI人工智能+电脑小能手2 天前
大白话说Java设计模式-43-访问者模式(源码剖析篇)
java·设计模式·访问者模式·源码分析·elementvisitor·asm classvisitor·spring spel
Michael_lcf3 天前
Agent设计模式:思考-行动-观察循环的本质与局限
设计模式·agent设计模式·agent设计模式的本质