자바 디자인 모드 의 장식 기 모드(Decorator)

개술
장식 모드 는 클 라 이언 트 에 게 투명 한 방식 으로 대상 을 확장 하 는 기능 으로 관 계 를 계승 하 는 대체 방안 이다.즉,클 라 이언 트 는 대상 이 장식 전과 장식 후에 어떤 차이 가 있다 고 생각 하지 않 는 다.장식 모델 은 더 많은 하위 클래스 를 창조 하지 않 아 도 대상 의 기능 을 확장 할 수 있다.장식 모델 의 관건 은 이런 확장 이 완전히 투명 하 다 는 것 이다.
패턴 구조
UML 도표:

장식 모드 의 클래스 캐릭터:
추상 적 인 구성 요소 역할(Project):추가 책임 을 받 을 대상 을 규범화 하기 위해 인 터 페 이 스 를 제공 합 니 다.
구체 적 인 구성 요소 역할(Employe):추가 책임 을 받 을 클래스 를 정의 합 니 다.
장식 역할(Manager):구조물 대상 의 인 스 턴 스 를 가지 고 추상 적 인 구조물 인터페이스 와 일치 하 는 인 터 페 이 스 를 정의 합 니 다.
구체 적 인 장식 역할(ManagerA,ManagerB):구조물 대상 에 게'붙 이기'에 부가 하 는 책임 을 진다.
코드 예제

package interview;

interface Project{
  void doCoding();
}

class Employe implements Project{

  @Override
  public void doCoding() {
    System.out.println("      ......");
  }
}

class Manager implements Project{

  private Project project;

  public Manager(Project project){
    this.project = project;
  }

  @Override
  public void doCoding() {
    startNewWork();
    project.doCoding();
  }

  public void startNewWork(){}
}

class ManagerA extends Manager{

  public ManagerA(Project project) {
    super(project);
  }

  @Override
  public void startNewWork() {
    System.out.println("            ");
  }
}

class ManagerB extends Manager{

  public ManagerB(Project project) {
    super(project);
  }

  @Override
  public void startNewWork() {
    System.out.println("            ");
  }
}
public class MainTest {

  public static void main(String arg[]) {
    Project project = new Employe();
    Project managerA = new ManagerA(project);
    Project managerB = new ManagerB(project);
    managerA.doCoding();
    managerB.doCoding();
  }
}

장식 모드 의 장단 점:
장점:
장식 모델 과 계승 의 목적 은 모두 대상 의 기능 을 확대 하 는 것 이지 만 장식 모델 은 계승 보다 더 많은 유연성 을 제공 할 수 있다.장식 모델 은 시스템 이'붙 이기'에 필요 한'장식'을 동태 적 으로 결정 하도록 허용 하고 계승 관 계 는 다 르 며 계승 관 계 는 정태 적 이 며 시스템 이 실행 되 기 전에 결정 된다.
서로 다른 구체 적 인 장식 류 와 이런 장식 류 의 조합 을 사용 하면 디자이너 는 다양한 행위 조합 을 창조 할 수 있다.
단점:
장식 모드 를 사용 하기 때문에 계승 관 계 를 사용 하 는 것 보다 적은 수량 이 필요 한 클래스 를 사용 할 수 있 습 니 다.비교적 적은 종 류 를 사용 하면 당연히 디자인 을 비교적 쉽게 진행 할 수 있다.그러나 다른 한편,장식 모델 을 사용 하면 계승 관 계 를 사용 하 는 것 보다 더 많은 대상 이 생 길 수 있다.더 많은 대상 은 실 수 를 어렵 게 만 들 수 있다.특히 이 대상 들 은 모두 비슷 해 보인다.
이상 이 바로 본 고의 모든 내용 입 니 다.여러분 의 학습 에 도움 이 되 고 저 희 를 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.

좋은 웹페이지 즐겨찾기