> Java > java지도 시간 > 본문

Java 브리징 모드에 대한 자세한 소개

WBOY
풀어 주다: 2022-05-01 09:00:23
앞으로
2542명이 탐색했습니다.

이 기사에서는 브리지 모드와 관련된 문제를 주로 소개하는 java에 대한 관련 지식을 제공합니다. 브리지 모드는 추상화와 구현이 독립적으로 변경될 수 있도록 분리하여 추상화와 구현의 두 가지 문제를 줄입니다. 가변차원의 결합정도를 살펴보시고 모든 분들께 도움이 되었으면 좋겠습니다.

Java 브리징 모드에 대한 자세한 소개

추천 학습: "java 동영상 튜토리얼"

실제로는 2차원 이상으로 변경될 수 있는 카테고리가 많습니다. 예를 들어 그래픽은 모양과 색상으로 나눌 수 있습니다. , 상속을 사용하면 m개의 모양과 n개의 색상을 가진 m*n 유형의 그래픽이 있을 뿐만 아니라 해당 하위 클래스도 많아 확장하기가 어렵습니다.

예를 들어 다양한 색상과 글꼴의 텍스트, 다양한 브랜드와 파워의 자동차, 다양한 성별과 직업의 남성과 여성, 다양한 플랫폼과 다양한 파일 형식을 지원하는 미디어 플레이어 등. 이러한 문제는 브리지 모드를 사용하면 잘 해결될 수 있습니다.


1. 브리지 패턴의 정의

추상화와 구현을 분리하여 독립적으로 변경할 수 있습니다. 상속 관계 대신 결합 관계를 사용하여 구현하므로 추상화와 구현의 두 가변 차원의 결합 정도가 줄어듭니다. 패턴 유형: 구조 설계 패턴: 원리 클래스 다이어그램:

그림 설명:


Java 브리징 모드에 대한 자세한 소개클라이언트 클래스:
브릿지 모드의 호출자

추상 클래스(추상):
    구현자 유지/즉, 해당 구현 클래스인 ConcretelmplementorA... 둘은 결합된 관계에 있으며 추상화 작업은 수행됩니다. 브리지로
  1. RehinedAbstraction:
  2. 는 추상화 추상 클래스의 하위 클래스입니다 lmplementor: 동작 구현 클래스의 인터페이스
  3. ConcretelmplementorA/B:
  4. 동작의 구체적인 구현 클래스
  5. UML 다이어그램에서:
  6. 추상 클래스 및 인터페이스는 여기에서 확인하세요. 은 집합관계이고, 실제로는 호출과 호출받는 관계
  7. 2. 브리지 모드의 장점과 단점
  8. 장점:

추상화와 구현의 분리, 강력한 확장성

원칙을 준수합니다. 열기 및 닫기합성 및 재사용 원칙을 준수합니다

    구현 세부 사항이 고객에게 투명합니다
  1. 단점:
집합 관계가 추상화 계층에서 설정되므로 개발자가 설계해야 합니다. 그리고 추상화를 위한 프로그램을 작성하고 시스템에서 독립적으로 변경되는 두 가지 차원을 올바르게 식별할 수 있습니다. 이로 인해 시스템을 이해하고 설계하기가 어려워집니다

    3. 브리지 모드의 구조
  • 브리지 모드에는 다음과 같은 주요 내용이 포함됩니다. 역할:

추상(Abstraction) 역할:

추상 클래스 정의 및 구현된 객체에 대한 참조 포함

확장 추상화(Refined Abstraction) 역할
    : 추상화된 역할의 하위 클래스이며 비즈니스 메서드를 구현합니다. 구현자 역할: 확장된 추상 역할에 의해 호출될 수 있는 구현된 역할의 인터페이스를 정의합니다. 구체적인 구현자 역할: 특정 구현을 제공합니다. 구현된 역할 인터페이스 구조 다이어그램:
  1. 이 구조 다이어그램의 구현 코드:
  2. 실현 역할:
  3. /**
     * 实视化角色
     */public interface Implemntor {
    
        public void OperationImpl();}
    로그인 후 복사
  4. 구체적인 구현 역할:
/**
 * 具体实现化角色
 */public class ConcreteImplementorA implements Implemntor{
    @Override
    public void OperationImpl() {
        System.out.println("具体实现化角色被访问");
    }}
로그인 후 복사

추상 역할:

rreee

Java 브리징 모드에 대한 자세한 소개 확장된 추상 역할:

/**
 * 抽象化角色
 */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();

    }}
로그인 후 복사

4 브리지 모드의 사례 구현

두 수준이 서로 다른 두 클래스 수준에 구현 및 추상화를 배치합니다.

교통수단은 도로를 주행합니다. 교통수단이 다릅니다

도로도 시멘트 도로와 아스팔트 도로로 구분됩니다.

교통등급:

扩展抽象化角色被访问
具体实现化角色被访问
로그인 후 복사

특정 교통수단: 자동차

/**
 * 交通工具类
 */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();}
로그인 후 복사

Java 브리징 모드에 대한 자세한 소개 특정 도로: 시멘트 도로

/**
 * 具体的路:油柏路
 */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、桥接模式的注意事项

  1. 实现了抽象和实现部分的分离,从而极大的提供了系统的灵活性,让抽象部分和实现部分独立开来,这有助于系统进行分层设计,从而产生更好的结构化系统
  2. 对于系统的高层部分,只需要知道抽象部分和实现部分的接口就可以了,其它的部分由具体业务来完成
  3. 桥接模式替代多层继承方案,可以减少子类的个数,降低系统的管理和维护成本
  4. 桥接模式的引入增加了系统的理解和设计难度,由于聚合关联关系建立在抽象层,要求开发者针对抽象进行设计和编程
  5. 桥接模式要求正确识别出系统中两个独立变化的维度,因此其使用范围有一定的局限性,即需要有这样的应用场景

6、桥接模式应用场景

对于那些不希望使用继承或因为多层次继承导致系统类的个数急剧增加的系统,桥接模式尤为适用.

推荐学习:《java视频教程

위 내용은 Java 브리징 모드에 대한 자세한 소개의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
원천:csdn.net
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿
회사 소개 부인 성명 Sitemap
PHP 중국어 웹사이트:공공복지 온라인 PHP 교육,PHP 학습자의 빠른 성장을 도와주세요!