본문 바로가기

프로그래밍/자바 디자인 패턴

자바 디자인 패턴 튜토리얼 - 구조 설계 패턴 - 복합 패턴

반응형

복합 패턴은 구조 패턴이므로 오브젝트 그룹의 트리 구조를 생성합니다.

복합 패턴은 객체 그룹을 단일 객체로 취급합니다.

복합 패턴은 하나의 클래스를 사용하여 트리 구조를 나타냅니다.

복합 패턴에서 우리는 클래스를 생성합니다. 그 클래스는 자체 객체 그룹을 포함합니다.

예제

다음 코드는 Employee 클래스를 사용하여 복합 패턴을 보여줍니다.


import java.util.ArrayList;import java.util.List;class Employee {   private String name;   private String title;   private List subordinates;   public Employee(String name,String title) {      this.name = name;      this.title = title;      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 "Employee :[ Name : "+ name       +", dept : "+ title +subordinates +" ]";   }   }public class Main {   public static void main(String[] args) {      Employee CEO = new Employee("John","CEO");      Employee headSales = new Employee("Rob","Sales");      Employee headMarketing = new Employee("Mike","Marketing");      Employee programmer1 = new Employee("Lili","Programmer");      Employee programmer2 = new Employee("Bob","Programmer");      Employee tester1 = new Employee("Jack","Tester");      Employee tester2 = new Employee("Tom","Tester");      CEO.add(headSales);      CEO.add(headMarketing);      headSales.add(tester1);      headSales.add(tester2);      headMarketing.add(programmer1);      headMarketing.add(programmer2);      //print all employees of the organization      System.out.println(CEO);       for (Employee headEmployee : CEO.getSubordinates()) {         System.out.println(headEmployee);         for (Employee employee : headEmployee.getSubordinates()) {            System.out.println(employee);         }      }       }}

위의 코드는 다음 결과를 출력합니다.

Employee : [Name : John, dept : CEO[Employee : [Name : Rob, dept : Sales]]Employee : [Name : Rob, dept : Sales[Employee : [Name : Jack, dept : Tester]]Employee : [Name : Jack, dept : Tester[]]Employee : [Name : Mike, dept : Marketing[Employee : [Name : Lili, dept : Programmer]]Employee : [Name : Lili, dept : Programmer[]]Employee : [Name : Bob, dept : Programmer[]]


반응형