이 기사에서는 브리지 모드와 관련된 문제를 주로 소개하는 java에 대한 관련 지식을 제공합니다. 브리지 모드는 추상화와 구현이 독립적으로 변경될 수 있도록 분리하여 추상화와 구현의 두 가지 문제를 줄입니다. 가변차원의 결합정도를 살펴보시고 모든 분들께 도움이 되었으면 좋겠습니다.
추천 학습: "java 동영상 튜토리얼"
실제로는 2차원 이상으로 변경될 수 있는 카테고리가 많습니다. 예를 들어 그래픽은 모양과 색상으로 나눌 수 있습니다. , 상속을 사용하면 m개의 모양과 n개의 색상을 가진 m*n 유형의 그래픽이 있을 뿐만 아니라 해당 하위 클래스도 많아 확장하기가 어렵습니다.
예를 들어 다양한 색상과 글꼴의 텍스트, 다양한 브랜드와 파워의 자동차, 다양한 성별과 직업의 남성과 여성, 다양한 플랫폼과 다양한 파일 형식을 지원하는 미디어 플레이어 등. 이러한 문제는 브리지 모드를 사용하면 잘 해결될 수 있습니다.
추상화와 구현을 분리하여 독립적으로 변경할 수 있습니다. 상속 관계 대신 결합 관계를 사용하여 구현하므로 추상화와 구현의 두 가변 차원의 결합 정도가 줄어듭니다. 패턴 유형: 구조 설계 패턴: 원리 클래스 다이어그램:
그림 설명:
클라이언트 클래스:
브릿지 모드의 호출자
원칙을 준수합니다. 열기 및 닫기합성 및 재사용 원칙을 준수합니다
/** * 实视化角色 */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("行驶在水泥路"); }}출력:
小汽车 行驶在水泥路 大巴车 行驶在水泥路
对于那些不希望使用继承或因为多层次继承导致系统类的个数急剧增加的系统,桥接模式尤为适用.
推荐学习:《java视频教程》
위 내용은 Java 브리징 모드에 대한 자세한 소개의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!