Introduction détaillée au mode pontage 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.
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 :
Classe client :
L'appelant du mode pont
- 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
- RehinedAbstraction : est une sous-classe de la classe abstraite d'abstraction lmplementor : interface de la classe d'implémentation du comportement
- ConcretelmplementorA/B : classe d'implémentation concrète du comportement
- À partir du diagramme UML : La classe abstraite et l'interface ici sont une relation d'agrégation , En fait, la relation entre appeler et être appelé
- 2 Avantages et inconvénients du mode pont
- 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
- Inconvénients :
- 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
- 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 :
- Le code d'implémentation de ce diagramme de structure :
- Rôle de réalisation :
/** * 实视化角色 */public interface Implemntor { public void OperationImpl();}
/** * 具体实现化角色 */public class ConcreteImplementorA implements Implemntor{ @Override public void OperationImpl() { System.out.println("具体实现化角色被访问"); }}

Rôle abstrait :
/** * 抽象化角色 */public abstract class Abstraction { protected Implemntor implemntor; protected Abstraction(Implemntor implemntor){ this.implemntor = implemntor; } public abstract void Operation();}
Rôle abstrait étendu :
/** * 扩展抽象化角色 */public class RefinedAbstraction extends Abstraction{ protected RefinedAbstraction(Implemntor implemntor) { super(implemntor); } public void Operation(){ System.out.println("扩展抽象化角色被访问"); implemntor.OperationImpl(); }}
Classe de test :
public class Test { public static void main(String[] args) { Implemntor implemntor = new ConcreteImplementorA(); Abstraction abs = new RefinedAbstraction(implemntor); abs.Operation(); }}
Sortie :
扩展抽象化角色被访问 具体实现化角色被访问
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épendammentLe transport roule sur la route. Il y a deux dimensions de changement ici
Les types de transport sont différentsLes routes sont également divisées en routes en ciment et en routes asphaltées.
Classe de transport :
/** * 交通工具类 */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("大巴车"); }}
Route abstraite :
/** * 抽象的路 */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("行驶在水泥路"); }}
//测试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(); }}
小汽车 行驶在水泥路 大巴车 行驶在水泥路
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!

Outils d'IA chauds

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

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

Undress AI Tool
Images de déshabillage gratuites

Clothoff.io
Dissolvant de vêtements AI

AI Hentai Generator
Générez AI Hentai gratuitement.

Article chaud

Outils chauds

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

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

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.

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.

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.

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.

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.

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

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.

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
