자바 디자인 모드-브리지 모드 상세 설명
수요:서로 다른 핸드폰 유형의 서로 다른 브랜드(예 를 들 어 버튼 핸드폰:노키아,폴 더 핸드폰:뉴 먼,스마트 폰:화 웨 이,샤 오미)에 대해 조작 프로 그래 밍(예 를 들 어 켜 기,꺼 지기,전화 하기)을 실현 한다.
먼저 일반적인 해법 을 말 해 보 자.서로 다른 핸드폰 유형 을 아버지 핸드폰 에 계승 하고 마지막 으로 각 브랜드 가 해당 하 는 핸드폰 유형 을 계승 한다.
단점:언뜻 보기 에는 문제 가 없 지만 확장(폭발)이 쉽 지 않다.새로운 핸드폰 유형(예 를 들 어 신 흥 접 이식)을 추가 하면 각 핸드폰 브랜드 의 유형 을 추가 하여 계승 해 야 한다(예 를 들 어 스마트 폰 을 계승 한 화 웨 이 샤 오미).마찬가지 로 우리 가 휴대 전화 브랜드 를 하나 늘 리 면 각 휴대 전화 스타일 에서 도 늘 려 야 한다.단일 직책 원칙 을 위반 하여 유지 비용 이 높다.
해결 방안 은 바로 아래 의 주인공:브리지 모델 이다.
브리지 모드
브리지 모드(Bridge)는 구조 형 디자인 모델 이다.말 그대로 다 리 를 놓 고 연결 하 는 것 처럼 포장,집적 과 계승 등 행 위 를 통 해 서로 다른 유형의 직책 을 맡 게 하고 추상 과 추상 을 두 가지 서로 다른 차원 에 두 어 두 가지 차원 을 독립 적 으로 바 꾸 고 각 부분의 독립 성 을 유지 하 며 그들의 기능 을 확대 해 야 한다.
원리 도표:
클 라 이언 트 클래스:클 라 이언 트 호출
실전 예시
브리지 모델 로 사례 의 실제 문 제 를 해결 하 다.
아 날로 그:
코드:
//
public interface Brand {
void open(); //
void close(); //
void call();//
}
//
public class NOKIA implements Brand{
@Override
public void open() {
System.out.println(" ");
}
@Override
public void close() {
System.out.println(" ");
}
@Override
public void call() {
System.out.println(" ");
}
}
public class Newsmy implements Brand{
@Override
public void open() {
System.out.println(" ");
}
@Override
public void close() {
System.out.println(" ");
}
@Override
public void call() {
System.out.println(" ");
}
}
public class Huawei implements Brand{
@Override
public void open() {
System.out.println(" ");
}
@Override
public void close() {
System.out.println(" ");
}
@Override
public void call() {
System.out.println(" ");
}
}
public class Xiaomi implements Brand{
@Override
public void open() {
System.out.println(" ");
}
@Override
public void close() {
System.out.println(" ");
}
@Override
public void call() {
System.out.println(" ");
}
}
//
public abstract class Phone {
private Brand brand;//
public Phone(Brand brand) {//
super();
this.brand = brand;
}
public void open() {
this.brand.open();
}
public void close() {
this.brand.close();
}
public void call() { this.brand.call(); }
}
//
public class ButtonPhone extends Phone{
public ButtonPhone(Brand brand) {
super(brand);
}
public void open() {
super.open();
System.out.println(" ");
}
public void close() {
super.close();
System.out.println(" ");
}
public void call() {
super.call();
System.out.println(" ");
}
}
public class SlidePhone extends Phone{
public SlidePhone(Brand brand) {
super(brand);
}
public void open() {
super.open();
System.out.println(" ");
}
public void close() {
super.close();
System.out.println(" ");
}
public void call() {
super.call();
System.out.println(" ");
}
}
public class SmartPhone extends Phone{
public SmartPhone(Brand brand) {
super(brand);
}
public void open() {
super.open();
System.out.println(" ");
}
public void close() {
super.close();
System.out.println(" ");
}
public void call() {
super.call();
System.out.println(" ");
}
}
//
public class Client {
public static void main(String[] args) {
Phone phone1 = new ButtonPhone(new NOKIA());
phone1.open();
phone1.call();
phone1.close();
System.out.println("=======================");
Phone phone2 = new SlidePhone(new Newsmy());
phone2.open();
phone2.call();
phone2.close();
System.out.println("=======================");
Phone phone3 = new SmartPhone(new Huawei());
phone3.open();
phone3.call();
phone3.close();
}
}
총결산
4.567917.추상 과 실현 부분의 분 리 를 실현 하여 시스템 의 유연성 을 크게 제공 하여 추상 적 인 부분 과 실현 부분 을 독립 시 켰 다.이것 은 시스템 이 분 층 설 계 를 하여 더욱 좋 은 구조 화 시스템 을 형성 하 는 데 도움 이 된다4.567917.브리지 모델 은 다 층 계승 방안 을 대체 하면 서브 클래스 의 개 수 를 줄 이 고 시스템 의 관리 와 유지 원 가 를 낮 출 수 있다4.567917.브리지 모델 의 도입 은 시스템 의 이해 와 디자인 난이 도 를 증가 시 켰 다.집적 관련 관 계 는 추상 층 에 구축 되 기 때문에 개발 자 에 게 추상 에 대한 디자인 과 프로 그래 밍 을 요구 했다
이체 분류:온라인 이체,카운터 이체,AMT 이체
이체 사용자 유형:일반 사용자,카드 사용자,카드 사용자...
-메시지 관리
메시지 종류:인 스 턴 트 메시지,지연 메시지
메시지 분류:핸드폰 문자,메 일 메시지,QQ 메시지...
이 글 은 여기까지 입 니 다.당신 에 게 도움 을 줄 수 있 기 를 바 랍 니 다.또한 당신 이 우리 의 더 많은 내용 에 관심 을 가 져 주 실 수 있 기 를 바 랍 니 다!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
디자인 모델 에 대한 인식 (1)대상 을 만 드 는 데 사용 할 인 터 페 이 스 를 정의 하여 하위 클래스 가 어떤 종 류 를 예화 할 지 결정 합 니 다.Factory Method 는 클래스 의 실례 화 를 하위 클래스 로 지연 시 킵 니 다....
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.