pattern
Composite pattern
easy16
2018. 7. 19. 17:19
Composite pattern
-group 객체를 single 객체와 유사한 방식으로 사용.
-structural pattern의 하나이며, 자기 자신의 객체를 트리 구조로 만들어 사용함.
-자신의 group 객체를 포함하는 class를 만든다.
(Employee의 subordinates)
Employee.java
public class Employee { private String name; private String dept; private int salary; private Listsubordinates; public Employee(String name, String dept, int salary){ this.name=name; this.dept=dept; this.salary=salary; subordinates= new ArrayList<>(); } public void add(Employee e){ subordinates.add(e); } public void remove (Employee e){ subordinates.remove(e); } public List getSubordinates(){ return subordinates; } public String toString(){ return ( "Emp : name :"+name+" dept : "+dept +" salary : "+salary ); } }
구현 및 출력 부분.
Employee CEO = new Employee("John","CEO", 30000); Employee headSales = new Employee("Robert","Head Sales", 20000); Employee headMarketing = new Employee("Michel","Head Marketing", 20000); Employee clerk1 = new Employee("Laura","Marketing", 10000); Employee clerk2 = new Employee("Bob","Marketing", 10000); Employee salesExecutive1 = new Employee("Richard","Sales", 10000); Employee salesExecutive2 = new Employee("Rob","Sales", 10000); CEO.add(headSales); CEO.add(headMarketing); headSales.add(clerk1); headSales.add(clerk2); headMarketing.add(salesExecutive1); headMarketing.add(salesExecutive2); for ( Employee headEmp : CEO.getSubordinates()){ Log.d (TAG, headEmp.toString()); for (Employee e : headEmp.getSubordinates()){ Log.d (TAG, e.toString() ); } }
출처 :
위의 예제보다는 아래 링크의 예제를 참조하는 것이 더 실용적이다.