设计模式-命令模式

发布于:2025-07-04 ⋅ 阅读:(12) ⋅ 点赞:(0)

一、所用到的类

一个接受者类:里面有N个方法
一个命令接口:里面有一个命令方法,目的是用来执行接收者的命令
N个命令实现类:目的是封装接收者的N个方法
一个调用类:用来将N个命令类通过add的方式添加到一起并通过接口中的那个方法来执行。

二、实现代码

接收者类

public class Stock {
    private String name = "ABC";
    private int quantity = 10;
    public void buy() {
        System.out.println("Stock [ Name: "+name+", Quantity: " + quantity +" ] bought");
    }
    public void sell() {
        System.out.println("Stock [ Name: "+name+", Quantity: " + quantity +" ] sold");
    }
}

命令接口

public interface Order {
    void execute();
}

封装接收者方法的第一个类

public class BuyStock implements Order{
    private Stock abcStock;
    public BuyStock(Stock abcStock){
        this.abcStock = abcStock;
    }
    @Override
    public void execute() {
        abcStock.buy();
    }
}

封装接收者方法的第二个类

public class SellStock implements Order{
    private Stock abcStock;
    public SellStock(Stock abcStock){
        this.abcStock = abcStock;
    }
    @Override
    public void execute() {
        abcStock.sell();
    }
}

聚合类

public class Broker {
    private List<Order> orderList = new ArrayList<>();
    public void takeOrder(Order order){
        orderList.add(order);
    }
    public void placeOrders(){
        for (Order order : orderList) {
            order.execute();
        }
        orderList.clear();
    }
}

调用类

@SpringBootApplication
public class CommandApplication {
    public static void main(String[] args) {
        Stock stock = new Stock();
        Order buyStock = new BuyStock(stock);
        Order sellStock = new SellStock(stock);
        Broker broker = new Broker();
        broker.takeOrder(buyStock);
        broker.takeOrder(sellStock);
        broker.placeOrders();
    }
}

三、总结

该种设计模式是对 接受类 中的各个方法来进行封装,最终调用同一个方法就能实现不同的效果。


网站公告

今日签到

点亮在社区的每一天
去签到