设计模式-命令模式
一、所用到的类
一个接受者类:里面有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;}@Overridepublic void execute() {abcStock.buy();}
}
封装接收者方法的第二个类
public class SellStock implements Order{private Stock abcStock;public SellStock(Stock abcStock){this.abcStock = abcStock;}@Overridepublic 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();}
}
三、总结
该种设计模式是对 接受类 中的各个方法来进行封装,最终调用同一个方法就能实现不同的效果。