一、所用到的类
一个接受者类:里面有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();
}
}
三、总结
该种设计模式是对 接受类 中的各个方法来进行封装,最终调用同一个方法就能实现不同的效果。