구조 형 모드: 브리지 모드

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 등 튜 토리 얼 에 개인 위 챗 을 추가 하여 "튜 토리 얼" 을 준비 하여 구조 사, 기계 학습 등 튜 토리 얼 을 얻 습 니 다.

좋은 웹페이지 즐겨찾기