/**
* @Author : haojiangt
* @Description :命令接口
**/
public interface Command {
void exeCute();
}
/**
* @Author : haojiangt
* @Description :具体的命令实现类,实现了买的操作
**/
public class BuyCommand implements Command{
private Stock stock;
public BuyCommand(Stock stock) {
this.stock = stock;
}
@Override
public void exeCute() {
stock.buy();
}
}
/**
* @Author : haojiangt
* @Description :具体的命令实现类,实现了卖的操作
**/
public class SellCommand implements Command{
private Stock stock;
public SellCommand(Stock stock) {
this.stock = stock;
}
@Override
public void exeCute() {
stock.sell();
}
}
/**
* @Author : haojiangt
* @Description :具体的命令实现类,实现了批量买的操作
**/
public class MutiBuyCommand implements Command{
private Stock[] stockList;
public MutiBuyCommand(Stock[] stockList) {
this.stockList = stockList;
}
@Override
public void exeCute() {
for (Stock stock : stockList) {
stock.buy();
}
}
}
/**
* @Author : haojiangt
* @Description :接收者,命令具体的实现者
**/
public class Stock {
private String name = "ABC";
private int quantity = 10;
public void buy(){
System.out.println(this.toString() + ",bought");
}
public void sell(){
System.out.println(this.toString() + ",sold");
}
@Override
public String toString() {
return "Stock{" + "name='" + name + ", quantity=" + quantity + '}';
}
}
package pattern.Command;
import java.util.ArrayList;
import java.util.List;
/**
* Command 将某一种或者某一组行为请求者和请为具体实现者解耦
* 通过调用者 调用接受者 执行命令
**/
/**
* @Author : haojiangtao
* @Description :命令的执行者(请求调用哪些命令)
**/
public class Broker {
private List<Command> commandList = new ArrayList<Command>();
public void addCommand(Command command){
commandList.add(command);
}
public void exeCommands(){
for (Command command : commandList) {
command.exeCute();
}
commandList.clear();
}
//客户端
public static void main(String[] args){
//创建一个接收者
Stock stock = new Stock();
//初始化具体命令
Command buyCommand = new BuyCommand(stock);
Command sellCommand = new SellCommand(stock);
//初始化执行者
Broker broker = new Broker();
//将命令添加到执行者
broker.addCommand(buyCommand);
broker.addCommand(sellCommand);
//执行
broker.exeCommands();
Stock[] stocks = new Stock[10];
for(int i = 0; i < 10; i++){
stocks[i] = new Stock();
}
//初始化具体命令
Command mutiBuyCommand = new MutiBuyCommand(stocks);
//初始化执行者
Broker mutiBroker = new Broker();
//将命令添加到执行者
mutiBroker.addCommand(mutiBuyCommand);
//执行
mutiBroker.exeCommands();
}
}
博客展示了命令模式的代码实现。定义了命令接口及多个具体命令实现类,如买、卖、批量买操作。还有接收者类负责具体操作,以及命令执行者类来管理和执行命令。通过客户端代码演示了如何使用这些类完成相应操作。
1012

被折叠的 条评论
为什么被折叠?



