올바른 토론 :
명령 모드는 요청 또는 조작을 객체로 캡슐화합니다. 명령 모드 런타임 시스템은 다양한 요청을 사용하여 클라이언트를 매개 변수화, 큐 요청 또는 레코드 요청 로그를보고 명령 취소 및 복구 기능을 제공 할 수 있습니다.
인기 있는:
실제로 이해하기 쉽습니다. 명령 모드, 당신이 신경 쓰는 것은 명령 (또는 조작)입니다. 예를 들어 봅시다. 회사에서 전체 운영은 시스템과 같습니다. 상사가 명령을 내렸고, 중간 수준의 지도자는 명령을 받았다가 특정 직원에게 할당했습니다. 전체 과정이 명확합니다. 이 프로세스를 수정하고 시스템을 형성하는 방법이 있습니다. 우리는 단지 핵심 요점을 파악하면됩니다 : Order. 그것을 추출하면 다른 모든 것이 해결 될 것입니다. 명령을 추출하여 독립 객체로 캡슐화하여 분리를 달성하십시오. 다른 사람들은 CEO, 인사 부서 또는 아빠 가이 명령을 제안했는지 쉽게 확장 할 수 있습니다. 이 명령의 집행자가 Zhang San 또는 Turtle인지 여부에 관계없이. 이 모델의 출현은 실제로 철학적 인 "주요 모순을 파악하는 것"입니다. 다른 작가들과 같은 더 많은 사례는 "길가로가는 것과 바베큐 식당에 바베큐를 먹는 것의 차이점은 무엇입니까?"또는 "원숭이 킹은 타이바이 금성으로 원숭이를 사로 잡기 위해 하늘 궁전의 옥 황제에 대해 큰 소란을 일으킨다"고 인용했습니다.
Java 명령 모드는 본질적으로 명령을 캡슐화하여 명령 발행에 대한 책임을 분리하고이를 다른 개체로 위임합니다. 평신도의 관점에서, 나는 상사이므로, 나는 단지 주문을 보냅니다. 이 주문을 누구에게 보내고 누가 실행 해야하는지에 관해서는, 그것은 나에게 달려 있습니다. 나는 누군가를 고용하기 위해 돈을 보내지 않고 나 자신에게 문제를 일으킨다. 귀하는 사물을 담당하는 직원이며 귀하의 의무는 상사가 할당 한 작업을 수행하는 것입니다. 지구까지, 너무 많이 모르고, 험담하지 말고, 너무 많이 묻지 마십시오.
성취하다:
먼저 클래스 다이어그램을 살펴 보겠습니다.
이를 바탕으로 샘플 코드를 살펴 봅니다.
공개 인터페이스 iCommand {void execute (); } public class concretecommand는 icommand {개인 수신기 수신기; Public ConcreteCommand (수신기 수신기) {this.receiver = 수신기; } @override public void execute () {this.receiver.action (); }} 공개 클래스 수신기 {public void action () {system.out.println ( "수신기는 뭔가"); }} public class invoker {private icommand 명령; public invoker (icommand 명령) {this.command = 명령; } public void invoke () {this.command.execute (); }} public class test {public static void main (string [] args) {수신기 수신기 = new 수신기 (); // 실제 실행자 iCommand 명령 = new ConcreteCommand (수신기); // 격리 인 invoker = new invoker (명령); // 발신자 invoker.invoke (); }}
이점:
결점:
특정 명령 클래스가 너무 많을 수 있습니다.