하나의 권장 사항은 리프 패턴 노드에서 부적절한 자식 관리 작업을 처리하는 기본 작업을 제공하는 것입니다 (즉, AddChild에서 예외를 throw하고 Children에 대해 빈 열거 형을 반환하는 등).이 복합 패턴의 유효한 해석입니까?
클래식 패턴에 대한 필자의 이해는 Leaf 서브 클래스와 Composite 서브 클래스가있는 단일 추상 클래스를 갖는 것이지만 부모에 기본 연산을 제공하면 Leaf에 대한 필요성이 효과적으로 제거되지 않습니까?
누구나 그렇게합니까?
건배,
Berryl
nah, 그것과 동일한 패턴이지만 위키 피 디아 문서는 GoF에서 [Variation] (http://en.wikipedia.org/wiki/Composite_pattern#Variation)으로 배웠던 방식과 관련이 있습니다. 너무!. 나는 위키피디아가 얼마나 유용한 지 잊는다. – Berryl
AddChild는 항상 논란의 대상이었습니다. 그것을 인터페이스의 일부로 만들면 Composite의 클라이언트는 Leaf 또는 Composite를 실제로 처리하고 있는지를 신경 쓸 필요가 없습니다. 그 이유는 GoF가 그 이유에서 선호하는 것입니다 (또한 구성 요소를 AddChild의 합성). 가격은 당신이 그 클래스에 자연스러운 방법이 없다는 것입니다. 그래서 저자 또는 wikiopedia 기사가 모든 하위 관리 작업을 복합체에만 사용하는 것이 좋습니다. – Berryl
내가이 * 특별한 경우에 수행 한 작업은 실제로 리프 노드 나 복합 패턴에 대한 강력한 요구가없는 단일 트리 구조가 있고 GeographicBoundaryComposite를 GeographicBoundary로 축소했다고 결정합니다. 건배 – Berryl