Latest web development tutorials

Factory-Modus

Fabrik-Muster (Factory-Pattern) Java ist eine der am häufigsten verwendeten Entwurfsmuster. Diese Art von Entwurfsmustern gehören Schema zu erstellen, die die beste Weg, um Objekte zu erstellen bietet.

In der Fabrik-Modus werden wir den Kunden nicht aussetzen eine logische erstellen, wenn Sie ein Objekt erstellen, und durch die Verwendung einer gemeinsamen Schnittstelle in das neu erstellte Objekt zu verweisen.

Einführung

Absichten: Die Definition einer Schnittstelle des Objekts erstellt, lassen Sie Subklassen entscheiden , welche Klasse eine Fabrik, die Fabrik Muster instanziiert den Prozess der Erstellung der Verzögerung zu der Unterklasse zu machen.

Vor allem zu lösen: Das Hauptproblem der Interface - Optionen.

Wann verwendet man :wenn wir ausdrücklich verschiedene Instanzen unter Plan verschiedenen Bedingungen zu schaffen.

Wie zu beheben: Lassen Sie Subklassen die Fabrik Schnittstelle zu implementieren, es ist ein abstraktes Produkt zurückgegeben.

Der Schlüsselcode: der Erstellungsprozess in ihrer Unterklassen ausgeführt.

Anwendungsbeispiele: 1, braucht man ein Auto, können Sie aus dem Inneren der Fabrik abholen, direkt , ohne das Auto zu Rohr mit ist , wie es zu tun ist , sowie die Umsetzung im Auto.2, Hibernate Exchange-Datenbank einfaches Ändern Dialekt und Autofahren sein kann.

Vorteile: 1, wollte ein Anrufer ein Objekt zu erstellen, wissen nur seinen Namen.2, hohe Skalierbarkeit, wenn Sie ein Produkt hinzufügen, solange der Ausbau einer Fabrik Klasse sein kann. 3, Produktrealisierung Abschirmung, der Anrufer nur mit Produktschnittstelle betroffen.

Nachteile: die jeweils ein Produkt zu erhöhen, müssen wir Klassen und Objekte fügen Sie ein Betonwerk zu erreichen, so dass die Anzahl der Klassen in den System exponentiell zunimmt, zu einem gewissen Grad, die Komplexität des Systems erhöht, sondern erhöht auch die systemspezifischen Klasse Abhängigkeit.Dies ist nicht eine gute Sache.

Einsatzszenarien: 1, Logger: Aufzeichnungen können auf Ihrer lokalen Festplatte aufgezeichnet werden, das Systemereignis, Remote - Server, kann der Benutzer wählen , irgendwo anzumelden.2, Datenbankzugriff, wenn der Benutzer nicht weiß, welche Art von endgültige System verwendet eine Datenbank und die Datenbank könnte sich ändern. 3, die Gestaltung eines Rahmens für die Verbindung zum Server, müssen Sie drei Vereinbarungen, "POP3", "IMAP", "HTTP", können diese drei als Produktkategorie, eine gemeinsame Schnittstelle zu erreichen.

Hinweis: Als eine Klasse erstellen Modus, wo es gebraucht wird , um komplexe Objekte zu erzeugen, können Sie die Factory - Methode Muster verwenden.Eine Sache zu beachten ist, dass der Ort für komplexe Objekte, die Fabrik Muster verwenden und einfache Objekte, insbesondere, müssen nur durch neue Objekte ohne die Verwendung des Fabrikmodell erstellt abgeschlossen sein. Wenn Sie die Fabrik Muster verwenden, ist es notwendig, eine Factory-Klasse einzuführen, wird die Komplexität des Systems zu erhöhen.

Realisierung

Wir werden eine Entitätsklasse Schnittstelle und ImplementierungFormForm Schnittstelle erstellen. Der nächste Schritt ist die Factory - KlassenShapeFactory definieren.

FactoryPatternDemo,unsere Demo zu bekommen die KlasseShapeFactoryShape - Objekt zu verwenden. Es wird Informationen(Kreis/ Rechteck / Quadrat) zuShapeFactory übertragen,muss es die Art des Objekts zu erhalten.

Fabrik-Muster 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 ( "Inside Rectangle :: draw () -Methode.");
   }
}

Square.java

public class Platz implementiert Form {

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

Circle.java

public class Kreis implementiert Form {

   @Override
   public void draw () {
      System.out.println ( "Inside Kreis :: draw () -Methode.");
   }
}

Schritt 3

Erstellen Sie eine Fabrik die Objekt Entitätsklassen auf der gegebenen Informationen beruhen zu erzeugen.

ShapeFactory.java

public class ShapeFactory {
	
   // Verwenden GetShape Methode ein Objekt vom Typ Form öffentlicher Form GetShape (String shapeType) zu erhalten {
      if (shapeType == null) {
         return null;
      }		
      if (shapeType.equalsIgnoreCase ( "Kreis")) {
         return new Kreis ();
      } Else if (shapeType.equalsIgnoreCase ( "Rechteck")) {
         return new Rectangle ();
      } Else if (shapeType.equalsIgnoreCase ( "SQUARE")) {
         return new-Platz ();
      }
      return null;
   }
}

Schritt 4

Verwenden Sie die Fabrik eine Entität Objekt der Klasse zu erhalten, indem Typinformationen übergeben.

FactoryPatternDemo.java

public class FactoryPatternDemo {

   public static void main (String [] args) {
      ShapeFactory shapeFactory = new ShapeFactory ();

      // Holen Sie sich das Circle-Objekt, und seine Zeichenmethode Form shape1 nennen = shapeFactory.getShape ( "Kreis");

      // Rufen Sie die Zeichenmethode von shape1.draw Kreis ();

      // Holen Sie sich das Rectangle-Objekt, und seine Zeichenmethode Form shape2 nennen = shapeFactory.getShape ( "Rechteck");

      // Die Zeichenmethode von shape2.draw Rectangle () aufrufen;

      Erhalten Sie // den Platz Objekt, und rufen seine Zeichenmethode Form shape3 = shapeFactory.getShape ( "SQUARE");

      // Rufen Sie die Zeichenmethode Platz shape3.draw ();
   }
}

Schritt 5

Stellen Sie sicher, ausgegeben.

Innerhalb Kreis :: draw () -Methode.
Innerhalb Rectangle :: draw () -Methode.
Im Inneren Platz :: draw () -Methode.