Java 디자인 모드의 명령 모드

2757 단어 Java 언어
코드:
package com.zhangxf.command;

import java.util.ArrayList;
import java.util.List;

//   
class Stock {
	//     
	private String name;

	public Stock(String name) {
		this.name = name;
	}

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}
}

//      
class StockOp {
	//         
	private String account;
	//       
	private Stock stock;
	//       
	private int quantity;

	public StockOp(String account, Stock stock, int quantity) {
		this.account = account;
		this.stock = stock;
		this.quantity = quantity;
	}

	//    
	public void buy() {
		System.out.println(account + " buy " + quantity + " " + stock.getName() + " ");
	}

	//    
	public void sell() {
		System.out.println(account + " sell " + quantity + " " + stock.getName() + " ");
	}

}

//     
interface Order {
	public void excecute();
}

//  
class Buy implements Order {
	private StockOp op;

	public Buy(StockOp op) {
		this.op = op;
	}

	@Override
	public void excecute() {
		op.buy();
	}
}

//  
class Sell implements Order {
	private StockOp op;

	public Sell(StockOp op) {
		this.op = op;
	}

	@Override
	public void excecute() {
		op.sell();
	}
}

//       
class Broker {
	private List orderList;
	public Broker() {
		orderList = new ArrayList();
	}
	
	public void addTradePlan(Order order) {
		orderList.add(order);
	}
	
	public void showTradePlan() {
		System.out.println("opList:" + orderList.size());
	}
	
	public void excecuteTradePlan() {
		for(Order order: orderList) {
			order.excecute();
		}
	}
	
	public void clearTradePlan() {
		orderList.clear();
	}
}


public class Command {

	public static void main(String[] args) {
		//     
		Stock a = new Stock("STOCK A");
		Stock b = new Stock("STOCK B");
		Stock c = new Stock("STOCK C");
		
		//          
		StockOp aOp = new StockOp("Billy", a, 100);
		StockOp bOp = new StockOp("Kate", b, 50);
		StockOp cOp = new StockOp("Jason", c, 200);
		
		//         
		Broker broker = new Broker();
		broker.addTradePlan(new Buy(aOp));
		broker.addTradePlan(new Buy(bOp));
		broker.addTradePlan(new Sell(cOp));
		
		//       
		broker.showTradePlan();
		
		//       
		broker.excecuteTradePlan();
		
		//         
		broker.excecuteTradePlan();
		
		//       
		broker.clearTradePlan();
	}

}

실현 요점:
  • 주식류는 서비스의 속성만 기록했다
  • 주식 조작류는 구체적인 주식, 주식에 대해 집행할 수 있는 모든 조작, 그리고 필요한 구체적인 매개 변수
  • 와 관련된다.
  • 명령 인터페이스의 실현 클래스 내부에는 하나의 주식 조작 클래스가 포함되어 도대체 관련 주식에 대해 어떤 조작을 집행하는지 명확히 한다.
  • 프록시 클래스 관리, 모든 명령 인터페이스를 저장하는 실례.

  • 명령 모드는 여러 개의 단독 명령을 한데 모아 기록하여 집중 감사, 집행, 중복 집행, 반환 등 스크립트의 대량 집행과 약간 비슷하다.

    좋은 웹페이지 즐겨찾기