5. Java 디자인 모델 --- 위임 모드 (Delegate Pattern)

위임 방식 은 무엇 입 니까?
       위임 모델 은 23 가지 전형 적 인 디자인 모델 에 속 하지 않 는 다.그러나 Spring 프레임 소스 코드 에 서 는 여러 차례 구현 되 었 다.의뢰 모드 에 서 는 두 대상 이 같은 요청 을 처리 하 는 데 참여 하고 요청 을 받 은 대상 은 다른 대상 에 게 의뢰 하여 처리 합 니 다.
위임 방식
       프로젝트 팀 은 프로젝트 매니저 A, 프로그래머 B 와 프로그래머 C 를 포함한다.현재 갑 은 xxx 임 무 를 완성 해 야 하 는 프로젝트 가 있다.우선 갑 은 B 와 C 를 직접 찾 는 것 이 아니 라 프로젝트 매니저 A 를 직접 찾 아 이 프로젝트 에 대해 이야기 할 것 이다.프로젝트 매니저 는 이 프로젝트 를 분석 한 결과 두 사람의 합작 이 필요 하 다 는 것 을 알 게 되 었 기 때문에 A1 모듈 을 B 에 게 나 누 어 주 고 A2 모듈 을 C 에 나 누 어 주 며 B 와 C 가 합작 하여 이 프로젝트 를 완성 했다.
       이 수요 에서 프로젝트 매니저 는 업 무 를 조율 하 는 역할 만 했 을 뿐 실제 업 무 는 B 와 C 에 의 해 이 루어 졌 다.이 를 통 해 위임 모델 의 주요 특징 은 다음 과 같다.
위임 모드 의 주요 특징
       일 은 나 (B 와 C) 의 것 이 고, 공 은 너의 (A) 이다.프로젝트 매니저 는 어부 득 리 형 에 속한다.
위임 모드 의 기타 특징
        ① 위임 메커니즘, 중개 와 유사 한 기능
        ② 피 위탁인 의 인용 소지 (프로젝트 매니저 A 는 B 와 C 를 마음대로 부 릴 수 있 음)
        ③ 과정 에 관심 이 없고 결과 에 만 관심 이 있다 (대리 모델: 과정 에 관심 이 있 고 결과 에 관심 이 없다)
코드 구현
    1. 갑 은 현재 프로젝트 프로젝트 A 가 있 습 니 다.
/**
 *        projectA
 */
public interface IDelegate {
    //  A
    public void projectA();
}

2. 프로젝트 매니저 가 평가 한 후에 두 명의 프로그래머 B 와 C 가 완성 해 야 한다. 
/**
 *    B
 */
public class ProgrammerB implements IDelegate{
    @Override
    public void projectA() {
        System.out.println("   B    A");
    }
}
/**
 *    C
 */
public class ProgrammerC implements IDelegate{
    @Override
    public void projectA() {
        System.out.println("   C    B");
    }
}

3. 프로젝트 매니저 의 구체 적 인 배분 과정
/**
 *     A(       ,    projectA,              )
 */
public class ManagerA implements IDelegate{
    /**
     *       ,          (   B C)   
     */
    IDelegate iDelegate;
    public ManagerA(IDelegate iDelegate) {
        this.iDelegate = iDelegate;
    }

    @Override
    public void projectA() {
        this.iDelegate.projectA();
    }
}

4. 테스트.즉, 분업 완료 후 프로젝트 의 구체 적 인 완성 상황
/**
 *        
 */
public class test {
    public static void main(String[] args) {
        //1.           
        //2.        ,       B C   
        IDelegate exuctorB = new ProgrammerB();
        IDelegate exuctorC = new ProgrammerC();
        //3.       B C   ,   B C     
        new ManagerA(exuctorB).projectA();
        new ManagerA(exuctorC).projectA();
        //4.    
        //5.          A   ,    B C   。 :   B C,      A 
    }
}

좋은 웹페이지 즐겨찾기