Latest web development tutorials

Mode Pont

Pont (bridge) est utilisé pour réaliser le découplage et d'abstraction, de sorte que les deux peuvent varier indépendamment. Ce type de modèles de conception appartiennent modèle structurel en fournissant abstraction structurée et un pont entre les deux pour atteindre le découplage.

Ce modèle consiste en une interface de passerelle qui permet à une entité indépendante du type de la classe d'interface de fonction. Ces deux types de classes peuvent être structurés de manière à changer et affecter l'autre.

Nous par les exemples suivants pour démontrer l'utilisation en mode pont (Pattern Bridge). Que vous pouvez utiliser la même méthode, mais différentes classes abstraites de pontage classe d'implémentation pour dessiner des cercles de différentes couleurs.

introduction

Intention: une abstraction et la mise en œuvre d' une partie de la séparation, de sorte qu'ils peuvent varier indépendamment.

Solution principale: Dans une variété de circonstances peuvent changer, l' héritage de classe peut provoquer une explosion, il est l' expansion flexible.

Quand l'utiliser: La mise en œuvre du système de classification peut avoir de multiples angles, chaque angle peut changer.

Comment corriger: cette classification multi-angle séparé, de sorte qu'ils sont indépendants des changements, de réduire le couplage entre eux.

Le code clé: classe dépendante de la mise en œuvre de la classe abstraite.

Exemples d'application: 1, Reborn du cochon cochon maréchal couvert la réincarnation, la réincarnation du mécanisme terrestre est divisé en deux niveaux, à savoir: l'âme et le corps, la première correspond à l' abstraction, ce qui est équivalent à la réalisation.Créatures de fonctions déléguant, appel de fonction des objets physiques, ces créatures peuvent être sélectionnées dynamiquement. 2, interrupteur sur le mur, vous pouvez voir le commutateur est abstrait, pas de tuyaux en béton à l'intérieur de la façon d'atteindre.

Avantages: 1, abstraite et réaliser la séparation.2, une excellente évolutivité. 3, la mise en œuvre de détails transparent pour le client.

Inconvénients: l'introduction du mode pont augmentera la difficulté de compréhension et de la conception du système, la relation de polymérisation construite sur la couche d'abstraction, ce qui nécessite le développeur pour la conception et la programmation abstraite.

Scénarios d' utilisation:1, si un système est nécessaire entre l' abstraction et le béton membre de rôle du rôle d'ajouter plus de flexibilité pour éviter de créer un lien d'héritage statique entre les deux niveaux, à travers le mode de pont de sorte qu'ils Abstraction Layer établir une relation. 2, pour ceux qui ne veulent pas utiliser le système comme un héritage multi-niveaux ou d'héritage conduit à une forte augmentation du nombre de classes du système, le mode de pont est particulièrement applicable. 3, une classe il y a deux dimensions indépendantes du changement, et ces deux dimensions doivent être élargies.

Remarque: Pour unchangement de deux dimensions indépendantes, en utilisant le mode facile à faire de pont.

réalisation

Nous avons comme un pont d'interfaceDrawAPIet mis en œuvreRedCircleDrawAPI de classe d'entitéd'interface,GreenCircle. Laformeest une classe abstraite, l'objetdel' utilisationDrawAPI.BridgePatternDemo, nos classes de démonstration utilisentlaclasseShapepour dessiner des cercles de différentes couleurs.

mode pont diagramme UML

Etape 1

Créer un pont qui implémente l'interface.

DrawAPI.java

interface publique DrawAPI {
   drawCircle public void (int rayon, int x, int y);
}

Etape 2

Créer une entité de mise en œuvre de transition mise en œuvreDrawAPIde la classe d'interface.

RedCircle.java

RedCircle public class implémente DrawAPI {
   @Override
   drawCircle public void (int rayon, int x, int y) {
      System.out.println ( "Dessin Cercle [couleur: rouge, rayon:"
         Rayon + + ", x" + x + "," + y + "]");
   }
}

GreenCircle.java

GreenCircle public class implémente DrawAPI {
   @Override
   drawCircle public void (int rayon, int x, int y) {
      System.out.println ( "Dessin Cercle [couleur: vert, rayon:"
         Rayon + + ", x" + x + "," + y + "]");
   }
}

Etape 3

DrawAPIutiliser l' interface pour créer uneformede classeabstraite.

Shape.java

public abstract class Shape {
   protégé DrawAPI drawAPI;
   Forme protégée (DrawAPI drawAPI) {
      this.drawAPI = drawAPI;
   }
   publique tirage abstract void ();	
}

Etape 4

Créer classe d'entité implémentel'interface Shape.

Circle.java

Cercle public class Shape {
   private int x, y, rayon;

   Cercle publique (int x, int y, int rayon, DrawAPI drawAPI) {
      super (drawAPI);
      this.x = x;  
      this.y = y;  
      this.radius = rayon;
   }

   tirage public void () {
      drawAPI.drawCircle (rayon x, y);
   }
}

Etape 5

Utilisation de la classeShapeetDrawAPIdessiner des cercles de différentes couleurs.

BridgePatternDemo.java

public class BridgePatternDemo {
   main (String [] args) {public static void
      Forme redCircle = new Circle (100,100, 10, nouvelle RedCircle ());
      Forme GreenCircle = new Circle (100,100, 10, nouvelle GreenCircle ());

      redCircle.draw ();
      greenCircle.draw ();
   }
}

Etape 6

Vérifiez la sortie.

Dessin Cercle [couleur: rouge, rayon: 10, x: 100, 100]
Dessin Cercle [couleur: vert, rayon: 10, x: 100, 100]