2013-11-02 1 views
1

뭔가, 왜 대부분의 예제는 클라이언트에서 호출자 직접하지만 수신기를 호출합니까?명령어 패턴에 관한 것, 대부분의 예제가 리시버를 직접 호출하지만 메인에서 호출자를 호출하지 않는 이유는 무엇입니까? 명령 패턴에 대한

인터넷에서 예제의 대부분에서

(IMG : http://www.dofactory.com/Patterns/Diagrams/command.gif) 클라이언트가 작업을 수행 할 수신기를 호출하지만, 호출자하지 왜? 실제 액션 코딩이 리시버 내부에 있기 때문에 호출 인터페이스를 통해 클라이언트 호출 작업 또는 직접 인터페이스를 사용하는 것이 좋습니다. 액션 코드의 경로를 변경하면 리시버 및 클라이언트 코드를 변경해야합니다. invoker를 사용하여 실제 명령을 호출하면 종속성이 줄어 듭니다.

따라서 일반적인 예에서 수신기를 통해 여전히 조치를 호출해야하는 이유는 무엇입니까? 도와주세요. 고맙습니다.

답변

2

나는 그것이 sequence diagram처럼 당신이 class diagram을 읽고 생각합니다. 대부분의 일반적인 예제 인 CommandPattern의 시퀀스 다이어그램은 클라이언트가 예상대로 Invoker를 통해 작업 방법을 호출하는 방법을 나타냅니다.

+0

답장 주셔서 감사합니다. 내 말은, 호출자를 통해 실제 명령을 호출하는 것이 더 좋을 것입니다. 호출자를 통해 명령을 호출하지만 수신자와 구체적인 명령에 의존하지 않는 이유는 무엇입니까? –

+0

패턴 정의에서 "객체를 객체로 취급 할 수 있도록 요청을 캡슐화"합니다. 구체적인 Command 클래스는 요청을 나타내는 객체이므로 요청을 의존해야하는 클라이언트입니다 그것. 수신자와의 클라이언트 의존성을 피할 수 있다는 데 동의합니다. 디자인 패턴은 문제에 대한 제안 된 해결책 일 뿐이며 가능한 구현은 하나만 존재하는 것은 아닙니다. –

+0

soo 고맙다, 내 문제를 해결 :) –

관련 문제