Latest web development tutorials

명령 모드

명령 모드 (명령 패턴)는 모델 형에 속하는, 데이터 기반 디자인 패턴이다. 요청 객체의 패키지 형태로 명령 및 호출하는 객체에 전달. 통화 상대의 목적은 적절한 커맨드 객체를 처리 할 수 ​​있고,이 명령은 명령을 실행하여 해당 개체로 전달한다.

소개

의도 : 객체로 요청을 캡슐화, 그래서 당신은 클라이언트를 매개 변수화하는 다른 요청을 사용할 수 있습니다.

주로 해결 : 소프트웨어 시스템, 요청자와 행동의 문제는 일반적으로 단단히 결합의 관계를 얻을 수 있지만, 이러한 실행 취소 또는 다시 녹음을 수행 할 필요가, 그리고 다른 트랜잭션 처리,이 저항 할 수없는 등의 상황, 엄격하게 설계 변경을 결합하는 것은 적절하지 않다.

사용하는 경우 : 같은 동작에 관해서는 어떤 경우에 다른 치료 "기록 / 다시 실행, 거래 취소"이러한 변화는 꽉 커플 링이 부적절 저항 할 수 있습니다.이 경우, 어떻게 "행동 요청"과 "행동의 구현은"디커플링 것입니까? 추상 객체의 집합으로서 작용, 느슨하게 결합은 둘 사이에 달성 될 수있다.

해결 방법 : 순서로, 발신자 전화를받는 사람에 의해 실행 호출자 수신기 → → 명령.

키 코드 세가지 역할의 정의 : (1)는 명령 입력을 사용하여 실제의 명령 실행 요소 2, 커맨드 3, 호출자 객체를 수신

적용 예 : 클래스 모델 층은 서로 다른 응용 프로그램이 다른 모델 클래스, 콘크리트 명령에 해당이 될 것입니다 동안 작업에 스트럿 1코어 컨트롤러 ActionServlet이는 단 하나, 호출자의 것과 동일합니다.

장점 : 1, 시스템은 커플 링의 정도를 감소시킨다.이 새로운 명령은 쉽게 시스템에 추가 될 수있다.

단점 : 명령 모드는 일부 시스템이 너무 많은 특정 명령 클래스가 원인이 될 수 있습니다.

사용 시나리오 : 로컬 명령과 같은 명령 모드에서 사용할 수있는, 1, GUI 각 버튼 명령이다.2 CMD 시뮬레이션.

참고 :이 시스템은, 명령 모드를 사용하여 고려할 수 명령 취소 (취소) 및 복구 작업 (다시 실행) 작업을 지원해야합니다, 확장 된 명령 모드를 참조하십시오.

실현

우리는 먼저 요청스톡클래스를 생성 한 후주문하고있는명령 인터페이스로 만들었습니다.BuyStockSellStock는주문인터페이스를 구현 엔티티 및 명령 클래스는, 상기 실제 명령 처리를 수행한다. 주문 및 주문을 받아 들일 수 호출 개체 클래스브로커로만들었습니다.

명령을 수행하는 개체를 결정하는 명령의 종류에 근거하여 명령 모드를 이용하여브로커 개체.CommandPatternDemo는브로커클래스를 사용하여 우리의 데모 클래스는 명령 모드를 설명합니다.

명령 모드 UML 다이어그램

1 단계

명령 인터페이스를 만듭니다.

Order.java

공용 인터페이스 주문 {
   () 실행 무효;
}

2 단계

요청 클래스를 만듭니다.

Stock.java

공용 클래스 재고 {
	
   개인 문자열 이름 = "ABC";
   개인 INT 양 = 10;

   공공 무효 구매 () {
      에서 System.out.println ( "증권 [이름 :"+ 이름 + ", 
         수량 : "+ 수량 +은"]) "을 구입하신;
   }
   공공 무효 판매 () {
      에서 System.out.println ( "증권 [이름 :"+ 이름 + ", 
         수량 : "+ 수량 +"] 판매 ");
   }
}

3 단계

만들기 엔티티 클래스주문이인터페이스를 구현합니다.

BuyStock.java

공용 클래스 BuyStock 주문을 {구현
   개인 주식 abcStock;

   공공 BuyStock (주식 abcStock) {
      this.abcStock = abcStock;
   }

   공공 무효 (실행) {
      abcStock.buy ();
   }
}

SellStock.java

공용 클래스 SellStock 주문을 {구현
   개인 주식 abcStock;

   공공 SellStock (주식 abcStock) {
      this.abcStock = abcStock;
   }

   공공 무효 (실행) {
      abcStock.sell ();
   }
}

4 단계

명령을 호출하는 클래스를 만듭니다.

Broker.java

수입 인 java.util.ArrayList;
가져 오기를 java.util.List;

   공용 클래스 브로커 {
   개인 목록 <주문> orderList = 새로운 ArrayList를 <주문> (); 

   공공 무효 takeOrder (주문 순서) {
      orderList.add (위해);		
   }

   공공 무효 placeOrders () {
      대한 (주문 순서 : orderList) {
         order.execute ();
      }
      orderList.clear ();
   }
}

5 단계

수락하고 명령을 실행하기 위해 브로커 클래스를 사용합니다.

CommandPatternDemo.java

공용 클래스 CommandPatternDemo {
   공공 정적 무효 메인 (문자열 []에 args) {
      주식 abcStock = 새로운 주식 ();

      BuyStock buyStockOrder = 새로운 BuyStock (abcStock);
      SellStock sellStockOrder = 새로운 SellStock (abcStock);

      브로커 브로커 = 새 브로커 ();
      broker.takeOrder (buyStockOrder);
      broker.takeOrder (sellStockOrder);

      broker.placeOrders ();
   }
}

6 단계

출력을 확인합니다.

구입 증권 [10 이름 : ABC, 수량]
선주문 [10 이름 : ABC, 수량]