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();
}
}
실현 요점:
명령 모드는 여러 개의 단독 명령을 한데 모아 기록하여 집중 감사, 집행, 중복 집행, 반환 등 스크립트의 대량 집행과 약간 비슷하다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Java 내부 클래스와 익명 내부 클래스의 차이클래스 A는 클래스 B의 멤버에 직접 액세스해야 하고 클래스 B는 클래스 A의 객체를 만들어야 합니다.이때 디자인과 접근을 편리하게 하기 위해 A클래스를 B클래스에 직접 정의한다.됐어요.Class A를 내부 클래스라...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.