2

누군가는 이러한 패턴 내 머리에 혼란을 나를 지워주십시오 (Chain of Responsibility와 같은 명령 사슬의 예)와 다른 사슬 사이트가 아닙니다. COMMAND의어떤 경우에 사슬의 명령 디자인 패턴이 적용 가능합니까?</strong></li> <li><strong>책임의 체인</strong></li> </ul> <p>내가 본 사이트하는 모두가 명령의</p> <ul> <li><strong>체인 :

CHAIN ​​:

내가 각각에 대해 이해하는 것입니다

클래스는 이제 속성이 클래스의 인스턴스 "명령"의 목록을 들고, CommandChain를 호출 할 수있는 동일한 인터페이스를 구현하십시오. 그들은 모두 onCommand (command, arguments)를 구현해야한다고 가정 해보십시오.

CommandChain에는 새로운 명령을 등록하는 addCommand() 메소드와 명령 이름과 매개 변수를 승인하는 runCommand() 메소드가 있습니다. 이 메소드는 응답 중 하나가 응답 할 때까지 명령 목록을 반복하고 해당 조치를 수행 한 다음 ok를 보냅니다. 책임 제가 일부 사이트에서 본 적이있는 것처럼

체인이이 차이가, 거의 같은 것이다 : 대신 루프에 명령의 목록을 저장하는 클래스를 갖는 통해, 각 명령 인스턴스는 다음 명령 인스턴스에 대한 참조를 저장합니다.

이렇게 두 디자인 패턴이 다르기에 충분히 큰 차이점이 있습니까?

실제로 어떤 경우에 해당합니까?

답변

2

이들은 동일한 디자인 패턴입니다.

속성이 동일하고 구현이 다른 경우 기능적으로 동일합니다. 이는 두 디자인 패턴이 동일하고 동일 함을 나타냅니다.

또 다른 힌트는 Chain of Responsibility DP에 대한 Wikipedia 페이지가 있지만 Chain of Command에는 없다는 것입니다.

DP에 관한 책을 저술 한 "Gang of Four"는 구현 방식이 아니라 동작 및 속성에 대해 매우 분명했으며 디자인 패턴을 정의했습니다.

+0

첫 번째 핸들러는 메인 클래스의 속성에 핸들러를 저장하고 두 번째 모든 핸들러에는 다음 핸들러에 대한 참조가 포함되어 있어도 동일한 동작을합니다. 나는 이것이 다른 패턴을 고려하기 위해 결정적 일 수도 있다고 생각했다. 어떤 구현 방법이 더 좋을까요? 그리고 제가 Atul에게 물어 본 것처럼 : 웹 개발의 일반적인 경우가이 패턴을 적용 할 수 있습니까? –

+0

처리기 수를 설정하고이를 설정할 때 경향이있는 경우 핸들러를 배열로 할당 할 수 있으므로 성능 관점에서 처리기 수와 같은 구현이 바람직합니다. 이렇게하면 참조 pr에 대한 포인터가 저장됩니다. 매니저. 패턴의 적용 가능성에 관해서는 : 많은, 많은 경우. 일반적으로 몇 가지 "특별한 경우"핸들러와 결합 된 기본 동작 (체인의 끝, catch-all 핸들러)을 원할 때. –

0

Chain of Command는 요청에 따라 여러 작업을 수행해야하는 단일 처리기가있는 반면 Chain of Responsibility에서는 각 처리기가 하나의 요청 유형 만 처리 할 수있을 때 사용됩니다 . 예를 들어 화재 경보가있는 경우 화재 감지기에 요청을 보내면 다른 레벨이나 장소에서 화재를 확인하기 위해 많은 명령을 내릴 수 있습니다. 소방관, 경비원, 경찰 등이 화재에 대응할 사람은 책임 사슬을 사용하여 수행 할 수 있습니다.

+0

그 예는 그것을 지우지 만, 웹 개발에서 두 패턴의 실제 사례를 아는 것이 완벽 할 것입니다. –

0

책임의 체인은 네 가지의 원래 디자인의 갱 중 하나이며, 여기에 PHP에서 구현 몇 가지 예를 찾을 수 있습니다 패턴의

http://www.php5dp.com/category/design-patterns/chain-of-responsibility/

한 사용 "스니퍼"프로그램을하고있다

여러 장치 (전화, 태블릿, 데스크톱)에 대해 여러 구성이있는 웹 사이트에서 사용할 올바른 장치를 선택합니다. CoR 패턴은 요청을하는 클라이언트와 처리 객체 간의 결합을 피합니다.

"처리 객체"가 다른 객체보다 상위에 있지는 않지만 계층 적 구조는 아니지만 주어진 요청에 가장 적합한 것이 발견 될 때까지 일련의 옵션을 거친다는 점에서 순차적입니다.

"명령 사슬"은 CoR에 대해 잘못된 이름이거나 계층 적 구조와 완전히 다른 패턴 일 수 있습니다.