Java 브리징 모드에 대한 자세한 소개
이 기사에서는 브리지 모드와 관련된 문제를 주로 소개하는 java에 대한 관련 지식을 제공합니다. 브리지 모드는 추상화와 구현이 독립적으로 변경될 수 있도록 분리하여 추상화와 구현의 두 가지 문제를 줄입니다. 가변차원의 결합정도를 살펴보시고 모든 분들께 도움이 되었으면 좋겠습니다.
추천 학습: "java 동영상 튜토리얼"
실제로는 2차원 이상으로 변경될 수 있는 카테고리가 많습니다. 예를 들어 그래픽은 모양과 색상으로 나눌 수 있습니다. , 상속을 사용하면 m개의 모양과 n개의 색상을 가진 m*n 유형의 그래픽이 있을 뿐만 아니라 해당 하위 클래스도 많아 확장하기가 어렵습니다.
예를 들어 다양한 색상과 글꼴의 텍스트, 다양한 브랜드와 파워의 자동차, 다양한 성별과 직업의 남성과 여성, 다양한 플랫폼과 다양한 파일 형식을 지원하는 미디어 플레이어 등. 이러한 문제는 브리지 모드를 사용하면 잘 해결될 수 있습니다.
1. 브리지 패턴의 정의
추상화와 구현을 분리하여 독립적으로 변경할 수 있습니다. 상속 관계 대신 결합 관계를 사용하여 구현하므로 추상화와 구현의 두 가변 차원의 결합 정도가 줄어듭니다. 패턴 유형: 구조 설계 패턴: 원리 클래스 다이어그램:
그림 설명:
클라이언트 클래스:
브릿지 모드의 호출자
- 구현자 유지/즉, 해당 구현 클래스인 ConcretelmplementorA... 둘은 결합된 관계에 있으며 추상화 작업은 수행됩니다. 브리지로
- RehinedAbstraction: 는 추상화 추상 클래스의 하위 클래스입니다 lmplementor: 동작 구현 클래스의 인터페이스
- ConcretelmplementorA/B: 동작의 구체적인 구현 클래스
- UML 다이어그램에서: 추상 클래스 및 인터페이스는 여기에서 확인하세요. 은 집합관계이고, 실제로는 호출과 호출받는 관계
- 2. 브리지 모드의 장점과 단점
- 장점:
추상화와 구현의 분리, 강력한 확장성
원칙을 준수합니다. 열기 및 닫기합성 및 재사용 원칙을 준수합니다
- 구현 세부 사항이 고객에게 투명합니다
- 단점:
- 3. 브리지 모드의 구조
- 브리지 모드에는 다음과 같은 주요 내용이 포함됩니다. 역할:
추상(Abstraction) 역할:
추상 클래스 정의 및 구현된 객체에 대한 참조 포함
확장 추상화(Refined Abstraction) 역할- : 추상화된 역할의 하위 클래스이며 비즈니스 메서드를 구현합니다. 구현자 역할: 확장된 추상 역할에 의해 호출될 수 있는 구현된 역할의 인터페이스를 정의합니다. 구체적인 구현자 역할: 특정 구현을 제공합니다. 구현된 역할 인터페이스 구조 다이어그램:
- 이 구조 다이어그램의 구현 코드:
- 실현 역할:
/** * 实视化角色 */public interface Implemntor { public void OperationImpl();}
로그인 후 복사- 구체적인 구현 역할:
/** * 具体实现化角色 */public class ConcreteImplementorA implements Implemntor{ @Override public void OperationImpl() { System.out.println("具体实现化角色被访问"); }}
추상 역할:
rreee 확장된 추상 역할:
/**
* 抽象化角色
*/public abstract class Abstraction {
protected Implemntor implemntor;
protected Abstraction(Implemntor implemntor){
this.implemntor = implemntor;
}
public abstract void Operation();}
/**
* 扩展抽象化角色
*/public class RefinedAbstraction extends Abstraction{
protected RefinedAbstraction(Implemntor implemntor) {
super(implemntor);
}
public void Operation(){
System.out.println("扩展抽象化角色被访问");
implemntor.OperationImpl();
}}
public class Test {
public static void main(String[] args) {
Implemntor implemntor = new ConcreteImplementorA();
Abstraction abs = new RefinedAbstraction(implemntor);
abs.Operation();
}}
두 수준이 서로 다른 두 클래스 수준에 구현 및 추상화를 배치합니다.
교통수단은 도로를 주행합니다. 교통수단이 다릅니다
도로도 시멘트 도로와 아스팔트 도로로 구분됩니다.
교통등급:
扩展抽象化角色被访问 具体实现化角色被访问
특정 교통수단: 자동차
/** * 交通工具类 */public interface Vehicle { public void drive();}
/** * 具体的交通工具:小汽车 */public class Car implements Vehicle{ @Override public void drive() { System.out.println("小汽车"); }}
/** * 具体的交通工具:大巴车 */public class Bus implements Vehicle{ @Override public void drive() { System.out.println("大巴车"); }}
콘크리트 도로: 아스팔트 도로
/** * 抽象的路 */public abstract class Road { protected Vehicle vehicle; public Road(Vehicle vehicle){ this.vehicle = vehicle; } public abstract void driveOnRoad();}

/** * 具体的路:油柏路 */public class UnpavedRoad extends Road{ public UnpavedRoad(Vehicle vehicle) { super(vehicle); } @Override public void driveOnRoad() { super.vehicle.drive(); System.out.println("行驶在油柏路"); }}
/** * 具体的路:水泥路 */public class CementRoad extends Road{ public CementRoad(Vehicle vehicle) { super(vehicle); } @Override public void driveOnRoad() { super.vehicle.drive(); System.out.println("行驶在水泥路"); }}
小汽车 行驶在水泥路 大巴车 行驶在水泥路
5、桥接模式的注意事项
- 实现了抽象和实现部分的分离,从而极大的提供了系统的灵活性,让抽象部分和实现部分独立开来,这有助于系统进行分层设计,从而产生更好的结构化系统
- 对于系统的高层部分,只需要知道抽象部分和实现部分的接口就可以了,其它的部分由具体业务来完成
- 桥接模式替代多层继承方案,可以减少子类的个数,降低系统的管理和维护成本
- 桥接模式的引入增加了系统的理解和设计难度,由于聚合关联关系建立在抽象层,要求开发者针对抽象进行设计和编程
- 桥接模式要求正确识别出系统中两个独立变化的维度,因此其使用范围有一定的局限性,即需要有这样的应用场景
6、桥接模式应用场景
对于那些不希望使用继承或因为多层次继承导致系统类的个数急剧增加的系统,桥接模式尤为适用.
推荐学习:《java视频教程》
위 내용은 Java 브리징 모드에 대한 자세한 소개의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

AI Hentai Generator
AI Hentai를 무료로 생성하십시오.

인기 기사

뜨거운 도구

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

드림위버 CS6
시각적 웹 개발 도구

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)

뜨거운 주제











Java의 난수 생성기 안내. 여기서는 예제를 통해 Java의 함수와 예제를 통해 두 가지 다른 생성기에 대해 설명합니다.

Java의 Weka 가이드. 여기에서는 소개, weka java 사용 방법, 플랫폼 유형 및 장점을 예제와 함께 설명합니다.

Java의 Smith Number 가이드. 여기서는 정의, Java에서 스미스 번호를 확인하는 방법에 대해 논의합니다. 코드 구현의 예.

이 기사에서는 가장 많이 묻는 Java Spring 면접 질문과 자세한 답변을 보관했습니다. 그래야 면접에 합격할 수 있습니다.

Java 8은 스트림 API를 소개하여 데이터 컬렉션을 처리하는 강력하고 표현적인 방법을 제공합니다. 그러나 스트림을 사용할 때 일반적인 질문은 다음과 같은 것입니다. 기존 루프는 조기 중단 또는 반환을 허용하지만 스트림의 Foreach 메소드는이 방법을 직접 지원하지 않습니다. 이 기사는 이유를 설명하고 스트림 처리 시스템에서 조기 종료를 구현하기위한 대체 방법을 탐색합니다. 추가 읽기 : Java Stream API 개선 스트림 foreach를 이해하십시오 Foreach 메소드는 스트림의 각 요소에서 하나의 작업을 수행하는 터미널 작동입니다. 디자인 의도입니다

Java의 TimeStamp to Date 안내. 여기서는 소개와 예제와 함께 Java에서 타임스탬프를 날짜로 변환하는 방법에 대해서도 설명합니다.

캡슐은 3 차원 기하학적 그림이며, 양쪽 끝에 실린더와 반구로 구성됩니다. 캡슐의 부피는 실린더의 부피와 양쪽 끝에 반구의 부피를 첨가하여 계산할 수 있습니다. 이 튜토리얼은 다른 방법을 사용하여 Java에서 주어진 캡슐의 부피를 계산하는 방법에 대해 논의합니다. 캡슐 볼륨 공식 캡슐 볼륨에 대한 공식은 다음과 같습니다. 캡슐 부피 = 원통형 볼륨 2 반구 볼륨 안에, R : 반구의 반경. H : 실린더의 높이 (반구 제외). 예 1 입력하다 반경 = 5 단위 높이 = 10 단위 산출 볼륨 = 1570.8 입방 단위 설명하다 공식을 사용하여 볼륨 계산 : 부피 = π × r2 × h (4
