Table des matières
1. La définition du modèle de pont
Séparation de l'abstraction et de la mise en œuvre, forte évolutivité
Définir des classes abstraites et inclure une référence à l'objet implémenté
Classe de transport :
5、桥接模式的注意事项
6、桥接模式应用场景
Maison Java javaDidacticiel Introduction détaillée au mode pontage Java

Introduction détaillée au mode pontage Java

May 01, 2022 am 09:00 AM
java

Cet article vous apporte des connaissances pertinentes sur java, qui présente principalement les problèmes liés au mode pont. Le mode pont sépare l'abstraction et l'implémentation afin qu'elles puissent changer indépendamment, réduisant ainsi les deux problèmes possibles d'abstraction et d'implémentation. regardez le degré de couplage des dimensions variables, j'espère que cela sera utile à tout le monde.

Introduction détaillée au mode pontage Java

Apprentissage recommandé : "Tutoriel vidéo Java"

En fait, dans la vraie vie, il existe de nombreuses catégories qui peuvent avoir deux dimensions ou plus. Par exemple, les graphiques peuvent être divisés par forme et par couleur, si. L'héritage est utilisé, il y aura m*n types de graphiques avec m formes et n couleurs. Non seulement il y aura de nombreuses sous-classes correspondantes, mais il sera également difficile de les développer.

Par exemple, du texte de différentes couleurs et polices, des voitures de différentes marques et puissances, des hommes et des femmes de différents genres et professions, des lecteurs multimédias prenant en charge différentes plates-formes et différents formats de fichiers, etc. Ces problèmes peuvent être bien résolus si vous utilisez le mode pont.


1. La définition du modèle de pont

sépare l'abstraction et la mise en œuvre afin qu'elles puissent changer indépendamment. Il est implémenté en utilisant une relation de combinaison au lieu d'une relation d'héritage, réduisant ainsi le degré de couplage des deux dimensions variables d'abstraction et de mise en œuvre. Type de modèle : Modèle de conception structurelle : Diagramme de classes principal :

Figure. description :


Introduction détaillée au mode pontage JavaClasse client :
L'appelant du mode pont

Classe abstraite (Abstraction) :
    Maintient Implementor/c'est-à-dire sa classe d'implémentation ConcretelmplementorA... Les deux sont dans une relation combinée, et l'Abstraction agit comme pont
  1. RehinedAbstraction :
  2. est une sous-classe de la classe abstraite d'abstraction lmplementor : interface de la classe d'implémentation du comportement
  3. ConcretelmplementorA/B :
  4. classe d'implémentation concrète du comportement
  5. À partir du diagramme UML :
  6. La classe abstraite et l'interface ici sont une relation d'agrégation , En fait, la relation entre appeler et être appelé
  7. 2 Avantages et inconvénients du mode pont
  8. Avantages :

Séparation de l'abstraction et de la mise en œuvre, forte évolutivité

Conforme au principe. d'ouverture et de fermetureConforme au principe de synthèse et de réutilisation

    Ses détails de mise en œuvre sont transparents pour les clients
  1. Inconvénients :
La relation d'agrégation étant établie au niveau de la couche d'abstraction, les développeurs sont tenus de concevoir et un programme d'abstraction et être capable d'identifier correctement deux dimensions changeantes indépendamment dans le système. Cela augmente la difficulté de compréhension et de conception du système

    3. La structure du mode pont
  • Le mode pont comprend les éléments principaux suivants. rôles :

Rôle d'abstraction (abstraction) :

Définir des classes abstraites et inclure une référence à l'objet implémenté

Rôle d'abstraction étendue (abstraction raffinée)
     : c'est une sous-classe du rôle abstrait, implémente les méthodes métier dans la classe parent et appelle les méthodes métier dans le rôle implémenté via la relation de combinaison
  1. Rôle d'implémenteur : définit l'interface du rôle implémenté, qui peut être appelée par le rôle abstrait étendu. Rôle d'implémenteur concret : fournit l'implémentation spécifique du rôle implémenté. Interface de rôle implémentée. Diagramme de structure :
  2. Le code d'implémentation de ce diagramme de structure :
  3. Rôle de réalisation :

/**
 * 实视化角色
 */public interface Implemntor {

    public void OperationImpl();}
Copier après la connexion
Rôle d'implémentation concrète :

/**
 * 具体实现化角色
 */public class ConcreteImplementorA implements Implemntor{
    @Override
    public void OperationImpl() {
        System.out.println("具体实现化角色被访问");
    }}
Copier après la connexion
Introduction détaillée au mode pontage Java
Rôle abstrait :
/**
 * 抽象化角色
 */public abstract class Abstraction {

    protected Implemntor implemntor;

    protected Abstraction(Implemntor implemntor){
        this.implemntor = implemntor;
    }

    public abstract void Operation();}
Copier après la connexion

Rôle abstrait étendu :

/**
 * 扩展抽象化角色
 */public class RefinedAbstraction extends Abstraction{

    protected RefinedAbstraction(Implemntor implemntor) {
        super(implemntor);
    }

    public void Operation(){
        System.out.println("扩展抽象化角色被访问");
        implemntor.OperationImpl();
    }}
Copier après la connexion

Classe de test :

public class Test {
    public static void main(String[] args) {

        Implemntor implemntor = new ConcreteImplementorA();
        Abstraction abs = new RefinedAbstraction(implemntor);
        abs.Operation();

    }}
Copier après la connexion

Sortie :

扩展抽象化角色被访问
具体实现化角色被访问
Copier après la connexion

4. Implémentation de cas du mode pont

Placez l'implémentation et l'abstraction dans deux niveaux de classe différents afin que les deux niveaux puissent être changé indépendamment

Le transport roule sur la route. Il y a deux dimensions de changement ici

Les types de transport sont différents

Les routes sont également divisées en routes en ciment et en routes asphaltées.


Classe de transport :

/**
 * 交通工具类
 */public interface Vehicle {

    public void drive();}
Copier après la connexion
Moyen de transport spécifique : voiture

/**
 * 具体的交通工具:小汽车
 */public class Car implements Vehicle{
    @Override
    public void drive() {
        System.out.println("小汽车");
    }}
Copier après la connexion
Moyen de transport spécifique : bus
/**
 * 具体的交通工具:大巴车
 */public class Bus implements Vehicle{
    @Override
    public void drive() {
        System.out.println("大巴车");
    }}
Copier après la connexion

Route abstraite :

/**
 * 抽象的路
 */public abstract class Road {

    protected Vehicle vehicle;

    public Road(Vehicle vehicle){
        this.vehicle = vehicle;
    }

    public abstract void driveOnRoad();}
Copier après la connexion

Introduction détaillée au mode pontage JavaCon route de Crète : route asphaltée

/**
 * 具体的路:油柏路
 */public class UnpavedRoad extends Road{
    public UnpavedRoad(Vehicle vehicle) {
        super(vehicle);
    }

    @Override
    public void driveOnRoad() {

        super.vehicle.drive();
        System.out.println("行驶在油柏路");
    }}
Copier après la connexion
Route spécifique : route cimentée

/**
 * 具体的路:水泥路
 */public class CementRoad extends Road{
    public CementRoad(Vehicle vehicle) {
        super(vehicle);
    }

    @Override
    public void driveOnRoad() {
        super.vehicle.drive();
        System.out.println("行驶在水泥路");
    }}
Copier après la connexion
Classe de test :

//测试public class Test {
    public static void main(String[] args) {

        Road roadCar = new CementRoad(new Car());
        roadCar.driveOnRoad();

        Road roadBus = new CementRoad(new Bus());
        roadBus.driveOnRoad();

    }}
Copier après la connexion
Sortie :

小汽车
行驶在水泥路
大巴车
行驶在水泥路
Copier après la connexion

5、桥接模式的注意事项

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

6、桥接模式应用场景

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

推荐学习:《java视频教程

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

AI Hentai Generator

AI Hentai Generator

Générez AI Hentai gratuitement.

Article chaud

R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
4 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Meilleurs paramètres graphiques
4 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Comment réparer l'audio si vous n'entendez personne
4 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Commandes de chat et comment les utiliser
4 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Nombre parfait en Java Nombre parfait en Java Aug 30, 2024 pm 04:28 PM

Guide du nombre parfait en Java. Nous discutons ici de la définition, comment vérifier le nombre parfait en Java ?, des exemples d'implémentation de code.

Générateur de nombres aléatoires en Java Générateur de nombres aléatoires en Java Aug 30, 2024 pm 04:27 PM

Guide du générateur de nombres aléatoires en Java. Nous discutons ici des fonctions en Java avec des exemples et de deux générateurs différents avec d'autres exemples.

Weka en Java Weka en Java Aug 30, 2024 pm 04:28 PM

Guide de Weka en Java. Nous discutons ici de l'introduction, de la façon d'utiliser Weka Java, du type de plate-forme et des avantages avec des exemples.

Numéro de Smith en Java Numéro de Smith en Java Aug 30, 2024 pm 04:28 PM

Guide du nombre de Smith en Java. Nous discutons ici de la définition, comment vérifier le numéro Smith en Java ? exemple avec implémentation de code.

Questions d'entretien chez Java Spring Questions d'entretien chez Java Spring Aug 30, 2024 pm 04:29 PM

Dans cet article, nous avons conservé les questions d'entretien Java Spring les plus posées avec leurs réponses détaillées. Pour que vous puissiez réussir l'interview.

Break or Return of Java 8 Stream Forach? Break or Return of Java 8 Stream Forach? Feb 07, 2025 pm 12:09 PM

Java 8 présente l'API Stream, fournissant un moyen puissant et expressif de traiter les collections de données. Cependant, une question courante lors de l'utilisation du flux est: comment se casser ou revenir d'une opération FOREAK? Les boucles traditionnelles permettent une interruption ou un retour précoce, mais la méthode Foreach de Stream ne prend pas directement en charge cette méthode. Cet article expliquera les raisons et explorera des méthodes alternatives pour la mise en œuvre de terminaison prématurée dans les systèmes de traitement de flux. Lire plus approfondie: Améliorations de l'API Java Stream Comprendre le flux Forach La méthode foreach est une opération terminale qui effectue une opération sur chaque élément du flux. Son intention de conception est

Horodatage à ce jour en Java Horodatage à ce jour en Java Aug 30, 2024 pm 04:28 PM

Guide de TimeStamp to Date en Java. Ici, nous discutons également de l'introduction et de la façon de convertir l'horodatage en date en Java avec des exemples.

Programme Java pour trouver le volume de la capsule Programme Java pour trouver le volume de la capsule Feb 07, 2025 am 11:37 AM

Les capsules sont des figures géométriques tridimensionnelles, composées d'un cylindre et d'un hémisphère aux deux extrémités. Le volume de la capsule peut être calculé en ajoutant le volume du cylindre et le volume de l'hémisphère aux deux extrémités. Ce tutoriel discutera de la façon de calculer le volume d'une capsule donnée en Java en utilisant différentes méthodes. Formule de volume de capsule La formule du volume de la capsule est la suivante: Volume de capsule = volume cylindrique volume de deux hémisphères volume dans, R: Le rayon de l'hémisphère. H: La hauteur du cylindre (à l'exclusion de l'hémisphère). Exemple 1 entrer Rayon = 5 unités Hauteur = 10 unités Sortir Volume = 1570,8 unités cubes expliquer Calculer le volume à l'aide de la formule: Volume = π × r2 × h (4

See all articles