Latest web development tutorials

Fassadenmuster

Fassadenmuster (Fassade Pattern) verbirgt die Komplexität des Systems an den Client liefert ein Client die Systemschnittstelle zugreifen kann. Diese Art von Entwurfsmustern gehören Strukturmodell, fügt es eine Schnittstelle zu einem bestehenden System, um die Komplexität des Systems zu verbergen.

Dieses Modell beinhaltet eine einzige Klasse, die auf Client-Anfragen und delegieren Anrufe an bestehende Systeme Klassenmethoden einen vereinfachten Ansatz bietet.

Einführung

Absichten: Das Subsystem eine Reihe von Schnittstellen in einer einheitlichen Schnittstelle bietet, Schema definiert das Aussehen einer High-Level - Schnittstelle , die das Subsystem einfacher zu bedienen ist.

Die wichtigste Lösung: Reduzierung der Komplexität interne Subsysteme zuzugreifen , wenn komplexe Systeme, Client mit der Schnittstelle zu vereinfachen.

Wann verwendet: 1, der Client nicht das System innerhalb der komplexen Zusammenhänge wissen müssen, muss das gesamte System nur eine "Rezeptionist" bieten kann sein.2, wobei der Einlaß definieren das System.

Wie zu beheben: Der Kunde ist nicht mit dem System verbunden ist , das System in Verbindung mit dem Auftreten von Klasse.

Der Schlüsselcode zwischen dem Client - System und einer Schicht aus Komplexität, wird diese Zeit Aufrufsequenz, Abhängigkeiten und andere Handhabung.

Anwendungsbeispiele: 1, ins Krankenhaus zu gehen, können Sie die Registrierung gehen kann, ambulante, bezeichnete Preis, Dispensary, die Patienten oder Familienangehörige von Patienten finden es sehr kompliziert, wenn es Personal an der Rezeption zur Verfügung gestellt werden, lassen Sie einfach die Mitarbeiter an der Rezeption zu behandeln, sehr bequem.2, JAVA dreistufige Entwicklungsmodell.

Vorteile: 1, um das System zu reduzieren , sind voneinander abhängig.2, die Flexibilität zu erhöhen. 3, zur Verbesserung der Sicherheit.

Nachteile: nicht mit dem Prinzip des Öffnens und Schließens entsprechen sollten , wenn Sie die Dinge zu viel Mühe zu ändern, sind Erbe Rewrite unangemessen.

Einsatzszenarien: 1, um den Zugang zu externen Modulen komplexe Module oder Subsysteme sind.2, relativ unabhängige Subsysteme. 3, die Vermeidung von Low-Level-Personalrisiken.

Hinweis: In einer hierarchischen Struktur, kann das System verwenden , um die Erscheinung des Eingabemodus für jede Schicht definieren.

Realisierung

Wir werden eineFormSchnittstelle und Implementierung der EntitätsklassenFormSchnittstelle erstellen. Der nächste Schritt ist eine Haut KlasseShapemakerzudefinieren.

Shapemaker- Klasse verwendet eine Entity - Klasse ein Benutzer Anrufe zu diesen Klassen zu vertreten.FacadePatternDemo,unsere Demonstration KlassenShapemaker- Klasse um die Ergebnisse anzuzeigen.

Fassadenmuster UML-Diagramm

Schritt 1

Erstellen Sie eine Schnittstelle.

Shape.java

public interface Form {
   Leere draw ();
}

Schritt 2

Erstellen von Entity-Klasse, die die Schnittstelle implementiert.

Rectangle.java

public class Rectangle implementiert Form {

   @Override
   public void draw () {
      System.out.println ( "Rectangle :: draw ()");
   }
}

Square.java

public class Platz implementiert Form {

   @Override
   public void draw () {
      System.out.println ( "Platz :: draw ()");
   }
}

Circle.java

public class Kreis implementiert Form {

   @Override
   public void draw () {
      System.out.println ( "Circle :: draw ()");
   }
}

Schritt 3

Erstellen Sie eine Klasse Aussehen.

ShapeMaker.java

public class {Shapemaker
   Privat Form Kreis;
   Privat Form Rechteck;
   Privat Form Quadrat;

   public Shapemaker () {
      Kreis = new Kreis ();
      Rechteck = new Rectangle ();
      square = new-Platz ();
   }

   public void drawCircle () {
      circle.draw ();
   }
   public void drawRectangle () {
      rectangle.draw ();
   }
   public void drawSquare () {
      square.draw ();
   }
}

Schritt 4

Die Verwendung von verschiedenen Arten von Haut Klasse, um die Form zu zeichnen.

FacadePatternDemo.java

public class FacadePatternDemo {
   public static void main (String [] args) {
      Shapemaker Shapemaker = new Shapemaker ();

      shapeMaker.drawCircle ();
      shapeMaker.drawRectangle ();
      shapeMaker.drawSquare ();		
   }
}

Schritt 5

Stellen Sie sicher, ausgegeben.

Kreis :: draw ()
Rectangle :: draw ()
Platz :: draw ()