브리지 모드 (교량 모드) - 구조 형
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 인터페이스 만 실현 하고 다른 재 료 를 늘 리 면 된다. 구체 적 으로 는 코드 없 이 이 루어 진다.모두 가 이 룰 수 있 을 거 라 고 믿는다.
결론: 두 차원 은 교차 되 지 않 았 다. 유일한 관 계 는 밀 크 티 에서 조합 을 통 해 밀 크 티 애 디 티 브 에 대한 인용 을 유 지 했 고 조합 을 통 해 이들 의 유 대 를 형성 했다. 이것 이 바로 브리지 모델 이다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
디자인 모델 의 공장 모델, 단일 모델자바 는 23 가지 디자인 모델 (프로 그래 밍 사상/프로 그래 밍 방식) 이 있 습 니 다. 공장 모드 하나의 공장 류 를 만들어 같은 인 터 페 이 스 를 실현 한 일부 종 류 를 인 스 턴 스 로 만 드 는 것...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.