큰소리 디자인 모델 23: 명령 모드 (양 꼬치 구 이 가 가 져 온 사고)
요청 을 대상 으로 밀봉 하여 서로 다른 요청 으로 고객 을 매개 변수 화하 고 요청 대기 열 이나 요청 로 그 를 기록 하 며 취소 작업 을 지원 합 니 다.
//
public abstract class Command {
private Barbecuer barbecuer;
public Command(Barbecuer bar) {
this.barbecuer = bar;
}
public abstract void excuteCommand();
public Barbecuer getBarbecuer() {
return barbecuer;
}
public void setBarbecuer(Barbecuer barbecuer) {
this.barbecuer = barbecuer;
}
}
//
public class BakeChickenWingCommand extends Command {
public BakeChickenWingCommand(Barbecuer bar) {
super(bar);
}
@Override
public void excuteCommand() {
this.getBarbecuer().bakeChickenWing();
}
}
//
public class BakeMuttonCommand extends Command {
public BakeMuttonCommand(Barbecuer bar) {
super(bar);
}
@Override
public void excuteCommand() {
this.getBarbecuer().bakeMutton();
}
}
//
public class Barbecuer {
//
public void bakeMutton() {
System.out.println("Bake the mutton!");
}
//
public void bakeChickenWing() {
System.out.println("Bake the chicken wing!");
}
}
//
public class Waiter {
public List<Command> orders = new ArrayList<Command>();
//
public void setOrder(Command com) {
orders.add(com);
System.out.println("add an order " + new Date());
}
//
public void cancelOrder(Command com) {
orders.remove(com);
System.out.println("Cancel the order " + new Date());
}
//
public void inform() {
for (Command c : orders) {
c.excuteCommand();
}
}
}
public class CommandMain {
public static void main(String[] args) {
// 1,
Barbecuer boy = new Barbecuer();
Command command1 = new BakeMuttonCommand(boy);
Command command2 = new BakeMuttonCommand(boy);
Command command3 = new BakeChickenWingCommand(boy);
// 2, ,
Waiter waiter = new Waiter();
waiter.setOrder(command1);
waiter.setOrder(command2);
waiter.setOrder(command3);
// 3, ,
waiter.inform();
// 4,
waiter.cancelOrder(command2);
waiter.inform();
}
}
명령 모드 역할:
1. 명령 대기 열 을 쉽게 설계 할 수 있 습 니 다.
2. 필요 한 경우 명령 을 로그 에 쉽게 계산 할 수 있 습 니 다.
3. 청 구 를 받 아들 일 수 있 는 측 이 청 구 를 거부 할 지 여 부 를 결정 한다.
4. 요청 의 취소 와 재 개 를 쉽게 할 수 있 습 니 다.
5. 새로운 구체 적 인 명령 류 를 추가 하 는 것 은 쉽다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
디자인 모델 의 공장 모델, 단일 모델자바 는 23 가지 디자인 모델 (프로 그래 밍 사상/프로 그래 밍 방식) 이 있 습 니 다. 공장 모드 하나의 공장 류 를 만들어 같은 인 터 페 이 스 를 실현 한 일부 종 류 를 인 스 턴 스 로 만 드 는 것...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.