브리지 모드 (교량 모드) - 구조 형

4642 단어 디자인 모드
간단 한 소개
브리지 모드 Pattern。두 가지 해석 이 있다. 첫 번 째 는 전형 적 인 GOF 에서 '추상 적 이 고 결합 을 실현 하여 독립 적 으로 변화 할 수 있 도록 하 는 것' 이 라 고 묘사 한 것 이다.두 번 째 는 다른 관련 서적 에서 묘사 한 것 "이 라 며" 하나의 종 류 는 두 개의 (또는 여러 개) 독립 적 으로 변화 하 는 차원 이 존재 하 는데, 우 리 는 이 두 개의 (또는 여러 개) 차원 이 독립 적 으로 확 장 될 수 있 도록 조합 하 는 방식 "이 라 고 설명 했다.
주의:
첫 번 째 GOF 의 이해 방식 에 대해 서 는 '추상' 과 '실현' 이라는 개념 을 이해 하 는 것 이 그것 을 이해 하 는 관건 이다. 정의 중의 '추상' 은 '추상 류' 나 '인터페이스' 가 아니 라 추상 화 된 '라 이브 러 리' 를 말한다. 이 는 골조 코드 만 포함 하고 진정한 업무 논 리 는 정의 중의 '실현' 에 위임 되 어야 한다.이 를 완성 한다. 정의 에서 '실현' 은 '인터페이스의 실현 류' 가 아니 라 독립 된 '라 이브 러 리' 이다. '추상' 과 '실현' 은 독립 적 으로 개발 되 고 대상 간 의 조합 관 계 를 통 해 조립 된다. '추상' 과 '실현' 은 실질 적 으로 두 개의 독립 적 인 변화의 차원 에 대응한다.
적용 범위
1. 한 가지 유형 은 두 개 또는 여러 개의 독립 적 인 변화 차원 이 존재 하고 두 개 또는 여러 개의 차원 이 모두 확장 되 어야 브리지 모델 을 사용 할 수 있다.
2. 모든 다 차원 변화 류 나 여러 나무 모양 류 간 의 결합 은 브리지 모드 로 결합 을 풀 수 있다.
이루어지다
여러분 이 밀 크 티 를 마신 적 이 있다 고 믿 습 니 다. 밀 크 티 는 큰 잔 에 설탕 이 적 고 작은 잔 에 설탕 이 적 으 며 큰 잔 에 설탕 이 많 고 작은 잔 에 설탕 이 많 습 니 다.밀 크 티 한 잔 은 두 가지 차원 이 있 는데 하 나 는 큰 잔, 작은 잔 이다.둘째, 설탕 이 적 고 설탕 이 많다.다음은 코드 로 이 루어 집 니 다.
밀 크 티 류 정의 ("추상")
public abstract class MilkyTea {
    protected MilkyTeaAdditives additives;


    public MilkyTea(MilkyTeaAdditives additives) {
        this.additives = additives;
    }

//         ,     
    public abstract void  makeMilkyTea();
}

Milky Tea 는 조합 을 통 해 Milky TeaAdditives 를 인용 했다.다음은 첫 번 째 차원: 큰 컵 작은 컵 차원 을 실현 한다.
public class LargeMikyTea extends MilkyTea {


    public LargeMikyTea(MilkyTeaAdditives additives) {
        super(additives);
    }

    @Override
    public void makeMilkyTea() {
        System.out.println("  "+ additives.addSomething() + "  " );
    }
}
public class SmallMilkyTea extends MilkyTea {

    public SmallMilkyTea(MilkyTeaAdditives additives) {
        super(additives);
    }

    @Override
    public void makeMilkyTea() {
        System.out.println("  "+ additives.addSomething() + "  ");
    }
}

설탕 첨가 에 대해 우 리 는 인 터 페 이 스 를 정의 합 니 다 ("실현")
public interface MilkyTeaAdditives {

    String addSomething();
}

또 다른 차원: 소 당 과 다 당, 코드 는 다음 과 같다.
public class LargeSugar implements MilkyTeaAdditives {
    @Override
    public String addSomething() {
        return "  ";
    }
}
public class SmallSugar implements MilkyTeaAdditives {
    @Override
    public String addSomething() {
        return "  ";
    }
}

완제품
public class Client {
    public static void main(String[] args) {
        LargeSugar largeSugar = new LargeSugar();

        SmallSugar smallSugar = new SmallSugar();
        
        //    
        LargeMikyTea largeMikyTea = new LargeMikyTea(largeSugar);
        largeMikyTea.makeMilkyTea();
        
        //    
        LargeMikyTea largeMikyTea1 = new LargeMikyTea(smallSugar);
        largeMikyTea1.makeMilkyTea();
        
        //    
        SmallMilkyTea smallMilkyTea = new SmallMilkyTea(largeSugar);
        smallMilkyTea.makeMilkyTea();
        //    
        SmallMilkyTea smallMilkyTea1 = new SmallMilkyTea(smallSugar);
        smallMilkyTea1.makeMilkyTea();
    }
}

시장 변화 에 따라 더 많은 고객 을 만족 시 키 기 위해 지금 은 중 배 를 내 놓 습 니 다.
public class MiddleMilkyTea extends MilkyTea {
    public MiddleMilkyTea(MilkyTeaAdditives additives) {
        super(additives);
    }

    @Override
    public void makeMilkyTea() {
        System.out.println("  "+additives.addSomething() + "  !");        
    }
}

대응 하 는 완제품 증가
public class Client {
    public static void main(String[] args) {
        LargeSugar largeSugar = new LargeSugar();

        SmallSugar smallSugar = new SmallSugar();
        //..................................
        
        //    
        MiddleMilkyTea middleMilkyTea = new MiddleMilkyTea(largeSugar);
        middleMilkyTea.makeMilkyTea();
        //    
        MiddleMilkyTea middleMilkyTea1 = new MiddleMilkyTea(smallSugar);
        middleMilkyTea1.makeMilkyTea();
        
    }
}

그러나 중 컵 만 늘 리 는 것 으로 는 부족 하 다. 많은 고객 들 이 다른 재 료 를 추가 해 야 한다. 예 를 들 어 진주, 시 미, 팥 등 이다. 구체 적 으로 는 Milky TeaAdditives 인터페이스 만 실현 하고 다른 재 료 를 늘 리 면 된다. 구체 적 으로 는 코드 없 이 이 루어 진다.모두 가 이 룰 수 있 을 거 라 고 믿는다.
결론: 두 차원 은 교차 되 지 않 았 다. 유일한 관 계 는 밀 크 티 에서 조합 을 통 해 밀 크 티 애 디 티 브 에 대한 인용 을 유 지 했 고 조합 을 통 해 이들 의 유 대 를 형성 했다. 이것 이 바로 브리지 모델 이다.

좋은 웹페이지 즐겨찾기