구조 형 모드: 브리지 모드
4397 단어 디자인 모드
7 대 구조 형 모델 의 2: 브리지 모델.
간단 한 소개
이름: 브리지 모드
브 릿 지 패턴
가치관: 디 결합 은 나 에 게 달 려 있다.
개인 소개: Decouple an abstraction from its implementation so that the two can vary independently. 추상 과 결합 을 실현 하여 이들 이 독립 적 으로 변화 할 수 있 도록 합 니 다.(에서 왔 다)
네가 원 하 는 이야기
현재 휴대 전화 2 분 천하 에서 안 드 로 이 드 휴대 전화 와 애플 휴대 전 화 는 현재 점유 율 이 98.45% 로 높 은 데 그 중에서 안 드 로 이 드 휴대 전화 점유 율 은 70.21% 이 고 애플 휴대 전화 점유 율 은 28.24% 이다. 아래 그림 과 같다.
(데 이 터 는 netmarkeetshare 에서)
이 2 개 시스템 이 있 기 때문에 많은 소프트웨어 업 체 가 2 개 시스템 의 앱 을 개발 해 야 한다.우 리 는 이 사례 를 보면 현재 휴대 전 화 는 안 드 로 이 드 폰 과 애플 폰 이 있 고 소프트웨어 는 구 글 브 라 우 저 와 화 호 브 라 우 저 가 있 으 며 휴대 전 화 를 통 해 소프트웨어 를 켜 는 과정 에서 브리지 모델 을 말한다.
개인 소 개 를 통 해 알 수 있 듯 이 추상 화 와 실현 화가 필요 하 다. 그리고 브리지 모델 을 사용 하여 추상 화 와 결합 을 실현 해 야 한다.
: 한 가지 대상 이 공유 하 는 것 을 한 가지 유형 으로 추상 화하 고 이런 대상 의 기본 유형 으로 한다.여기 서 우리 가 추상 화 할 수 있 는 것 은 바로 휴대 전화 다.
: 인터페이스 나 추상 류 의 실현 되 지 않 은 방법 을 실현 한다.여기 서 우리 가 실현 할 수 있 는 것 은 바로 소프트웨어 다.
: 위의 추상 화 와 실현 화가 있 고 브리지 모델 을 통 해 결합 을 실현 한다.여기 서 우 리 는 오픈 소프트웨어 open()
를 소프트웨어 실현 에 넣 었 다. 추상 적 인 핸드폰 은 템 플 릿 방법 모델 정의 openSoftware()
를 이용 하여 핸드폰 서브 클래스 를 실현 하도록 제공 했다. 핸드폰 서브 클래스 도 소프트웨어 를 호출 하 는 open()
방법 으로 스스로 오픈 논 리 를 실현 하지 못 했 고 이 오픈 소프트웨어 과정 을 결합 시 켰 다.다음은 사례 의 코드 를 드 리 겠 습 니 다.
Phone 핸드폰 추상 코드.속성
system
은 시스템 이름 을 대표 하고 software
은 열 소프트웨어 를 대표 하 며 openSoftware()
대외 적 으로 소프트웨어 를 여 는 방법 을 제공한다.abstract class Phone {
private String system;
private Software software;
public abstract void openSoftware();
public String getSystem() {
return system;
}
public void setSystem(String system) {
this.system = system;
}
public Software getSoftware() {
return software;
}
public void setSoftware(Software software) {
this.software = software;
}
}
안 드 로 이 드 폰 안 드 로 이 드 핸드폰 코드.
class AndroidPhone extends Phone {
public AndroidPhone(Software software){
this.setSystem("Android");
this.setSoftware(software);
}
@Override
public void openSoftware() {
this.getSoftware().open(this);
}
}
아이 오 스 폰 IOS 시스템 의 휴대 전화 코드 (즉 아이 폰).
class IOSPhone extends Phone {
public IOSPhone(Software software) {
this.setSystem("IOS");
this.setSoftware(software);
}
@Override
public void openSoftware() {
this.getSoftware().open(this);
}
}
소프트웨어 인터페이스 코드.이 소프트웨어 를 여 는 데 사용 할 오픈 () 방법 이 있 습 니 다.
interface Software {
void open(Phone phone);
}
크롬 구 글 브 라 우 저 소프트웨어 코드.
class Chrome implements Software {
@Override
public void open(Phone phone) {
System.out.println(" " + phone.getSystem() + " Chrome ");
}
}
FireFox 불 여우 브 라 우 저 소프트웨어 코드.
class FireFox implements Software {
@Override
public void open(Phone phone) {
System.out.println(" " + phone.getSystem() + " Firefox ");
}
}
테스트 코드 는 다음 과 같다.
public class BridgeTest {
public static void main(String[] args) {
Software chrome = new Chrome();
Software firefox = new FireFox();
Phone androidPhone = new AndroidPhone(chrome);
androidPhone.openSoftware();
androidPhone.setSoftware(firefox);
androidPhone.openSoftware();
Phone iosPhone = new IOSPhone(chrome);
iosPhone.openSoftware();
iosPhone.setSoftware(firefox);
iosPhone.openSoftware();
}
}
:
Android Chrome
Android Firefox
IOS Chrome
IOS Firefox
브리지 모드 코드 는 이미 다 썼 다.왜 브리지 모드 라 고 하 죠?소프트웨어 를 켜 는 구체 적 인 실현 을 휴대 전화 가 아 닌 소프트웨어 실현 에 넣 고 취 합 방식 으로 소프트웨어 를 켜 는 방법 을 호출 하기 때문에 다리 처럼 휴대 전화 와 소프트웨어 를 연결 하기 때문이다.
총결산
브리지 모델 은 집적 의 장점 을 이용 하여 계승 의 단점 을 해결 하고 추상 과 실현 을 분리 시 켜 결합 시킨다.바로 디 결합 으로 인해 더욱 좋 은 확장 성 을 가지 게 되 고 핸드폰 유형 이나 소프트웨어 를 추가 하 는 것 도 매우 쉬 우 며 원래 의 코드 를 파괴 하지 않 습 니 다.
추천
구조 형 모드: 어댑터 모드
행동 형 모드: 방문 자 모드
행동 형 모드: 해석 기 모드
공중 번호 배경 에 "큰 선물" 을 답장 하여 자바, Python, IOS 등 튜 토리 얼 에 개인 위 챗 을 추가 하여 "튜 토리 얼" 을 준비 하여 구조 사, 기계 학습 등 튜 토리 얼 을 얻 습 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
디자인 모델 의 공장 모델, 단일 모델자바 는 23 가지 디자인 모델 (프로 그래 밍 사상/프로 그래 밍 방식) 이 있 습 니 다. 공장 모드 하나의 공장 류 를 만들어 같은 인 터 페 이 스 를 실현 한 일부 종 류 를 인 스 턴 스 로 만 드 는 것...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.