Latest web development tutorials

bridge Mode

Bridge (Bridge) è utilizzato per ottenere il disaccoppiamento e astrazione, in modo che i due possono variare indipendentemente. Questo tipo di modelli di progettazione appartengono modello strutturale, fornendo astrazione strutturata e ponte tra i due per ottenere il disaccoppiamento.

Questo modello comporta come un'interfaccia ponte che permette un'entità indipendente dal tipo di classe di interfaccia funzione. Questi due tipi di classi possono essere strutturati in modo da cambiare e influenzano reciprocamente.

Noi dai seguenti esempi per dimostrare l'utilizzo della modalità bridge (Ponte Pattern). Che è possibile utilizzare lo stesso metodo, ma diverse classi astratte ponte classe di implementazione per disegnare cerchi di diversi colori.

introduzione

Scopi: astrazione e realizzazione di una parte della separazione, in modo che possano variare indipendentemente.

Soluzione principale: In una varietà di circostanze possono cambiare, classe ereditarietà può causare l'esplosione, non è l'espansione flessibile.

Quando usare: Implementazione sistema di classificazione può avere più punti di vista, ogni angolo può cambiare.

Come risolvere: mettere questa classificazione multi-angolo separato, in modo che siano indipendenti dai cambiamenti, ridurre l'accoppiamento tra di loro.

Il codice chiave: implementazione astratta Classe Classe dipendente.

Esempi di applicazione: 1, rinati dal maiale al maiale maresciallo baldacchino la reincarnazione, la reincarnazione del meccanismo di terreno è diviso in due livelli, vale a dire: l'anima e il corpo, il primo corrisponde a astrazione, che è equivalente al realizzo.Le creature di funzioni di delega, oggetti fisici chiamata di funzione, queste creature possono essere selezionati in modo dinamico. 2, interruttore sul muro, è possibile vedere l'interruttore è astratta, non tubo di cemento all'interno come raggiungere.

Vantaggi: 1, astratto e realizzare la separazione.2, eccellente scalabilità. 3, dettagli implementativi trasparente per il cliente.

Svantaggi: l'introduzione di modalità bridge aumenterà la difficoltà di comprensione e progettazione del sistema, il rapporto polimerizzazione costruita su livello di astrazione, richiedendo lo sviluppatore per la progettazione e la programmazione astratta.

scenari di utilizzo: 1, se è necessario un sistema tra astrazione e membro ruolo concreto del ruolo di aggiungere una maggiore flessibilità per evitare di creare collegamento eredità statico tra i due livelli, attraverso la modalità bridge in modo che essi Abstraction Layer stabilire un rapporto.2, per coloro che non vogliono utilizzare il sistema come eredità multi-livello o eredità portato ad un forte aumento del numero di classi di sistema, modalità bridge è particolarmente applicabile. 3, hanno bisogno di essere ampliato una classe ci sono due dimensioni indipendenti di cambiamento, e queste due dimensioni.

Nota: Per uncambio di due dimensioni indipendenti, utilizzando la modalità bridge facile da fare.

realizzazione

Abbiamo come un ponte di interfacciaDrawAPIe implementatoRedCircleDrawAPI classe di entitàinterfaccia,GreenCircle.Shapeè una classe astratta, l'oggetto usoDrawAPI.BridgePatternDemo, le nostre classi dimostrazione utilizzarelaclasseShapeper disegnare cerchi di diversi colori.

modalità Bridge diagramma UML

fase 1

Creare un ponte che implementa l'interfaccia.

DrawAPI.java

interfaccia pubblica DrawAPI {
   drawCircle public void (int raggio, int x, int y);
}

fase 2

Creare un'entità implementazione ponte realizzazioneDrawAPIdella classe di interfaccia.

RedCircle.java

public class RedCircle implementa DrawAPI {
   @Override
   drawCircle public void (int raggio, int x, int y) {
      System.out.println ( "Disegno Circle [colore: rosso, raggio:"
         + Radius + ", x:" + x + "," + y + "]");
   }
}

GreenCircle.java

public class GreenCircle implementa DrawAPI {
   @Override
   drawCircle public void (int raggio, int x, int y) {
      System.out.println ( "Disegno Circle [Colore: verde, raggio:"
         + Radius + ", x:" + x + "," + y + "]");
   }
}

fase 3

DrawAPIusare l'interfaccia per creare unaformaclasseastratta.

Shape.java

Forma classe astratta pubblica {
   protetto DrawAPI drawAPI;
   Forma protetta (DrawAPI drawAPI) {
      this.drawAPI = drawAPI;
   }
   public void draw astratto ();	
}

fase 4

Crea classe di entità implemental'interfaccia Shape.

Circle.java

public class Circle è un'estensione di Shape {
   private int x, y, radius;

   Circle pubblico (int x, int y, int raggio, DrawAPI drawAPI) {
      super (drawAPI);
      this.x = x;  
      this.y = y;  
      this.radius = raggio;
   }

   draw public void () {
      drawAPI.drawCircle (raggio, x, y);
   }
}

fase 5

Utilizzando la classeShapeeDrawAPIdisegnare cerchi di diversi colori.

BridgePatternDemo.java

public class BridgePatternDemo {
   Main (string [] args) {public static void
      Forma redCircle = new Circle (100,100, 10, nuova RedCircle ());
      Forma greenCircle = new Circle (100,100, 10, nuova GreenCircle ());

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

passo 6

Verifica uscita.

Disegno Circle [colore: rosso, Raggio: 10, x: 100, 100]
Disegno Circle [Colore: verde, Raggio: 10, X: 100, 100]