액세스 자바
답변
잎은 다음과 같이 구현됩니다 :
public class Leaf{
private List<Leaf> leaves;
......
}
그리고 당신이 이상적으로 다른 디자인 패턴을 가질 필요가 없습니다.
당신은 관리자 및 직원 사이의 관계로 생각할 수 있습니다.
직원 인 관리자는 해당 관리자로 근무하는 직원 목록을 보유 할 수 있습니다.
public class Employee{
private List<Employee> workingUnderHim;
......
}
좋습니다, 감사합니다; 하지만이 모든 경우의 목록처럼 모든 직원의 목록을 포함하고 싶다면? –
@ MaVeRicK_91 어디에서 보관하고 싶습니까? Employee 클래스에서 Employees 클래스를 가져와야하는 경우 해당 필드에 대한 getter 만 가질 수 있습니다. –
나는 이것에 동의하지 않는다. '잎사귀'는 다만 잎이다, 다른 잎의 어떤 지식도 없다. 당신이주는 예제는 잎과 복합체 인 동시에 하나의 클래스 인 Employee 만 가지고 있기 때문에 오해의 소지가 있습니다. 그러나 일반적인 경우는 설명하지 않습니다. –
위키피디아의 수업 다이어그램을 보았지만 슬프게도 잘못된 것입니다.
당신이 볼 수 있듯이, Component
및 Composite
사이의 연관이 동일하지 않습니다 :
Composite
집계Component
들 (예를 들어,이 사람은 GoF의 책에 대해 정확Leaf
에는 자식이 없습니다.
, Composite
은 주어진 루트 구성 요소, 당신이 하나를 사용할 수 있습니다 추측에 대한 모든 잎을 얻을 수있는 방법 getChild(int n)
n 번째의 아이 컴퍼넌트를 얻기 위해 (당신은 단순히 이전 목록의 n 번째 요소를 얻을 수)
있다 이 Tree Traversal 알고리즘 중.
하지만, getChild 메소드는, Component의 List의 n 번째의 잎 요소가 될 수 없었던, 오브젝트 합성의 n 번째의 아이를 돌려줍니다. –
물론, 위키 피 디아가 내가 말한 것만 큼 잘못되지는 않았지만 약간 부정확하다는 사실을 지적하는 것이 었습니다 ... –
구현 내용을 표시 – Andrew