Latest web development tutorials

tryb fabryczne

wzór fabryczne (Wzór) Java jest jednym z najczęściej używanych wzorców projektowych. Tego rodzaju wzorców projektowych należy stworzyć schemat, który zapewnia najlepszy sposób tworzenia obiektów.

W trybie ustawień fabrycznych, nie będziemy narażać klienta, aby stworzyć logiczną podczas tworzenia obiektu, a także poprzez stosowanie wspólnego interfejsu zwrócić się do nowo utworzonego obiektu.

wprowadzenie

Zamiar: Definicja interfejsu stworzonego obiektu, niech podklasy zdecydować, która klasa instancji fabrykę, wzór fabryki, aby proces tworzenia opóźnienie do podklasy.

Głównie do rozwiązania: Głównym problemem opcji interfejsu.

Kiedy stosować: gdy jawnie tworzyć różne instancje w różnych warunkach planu.

Jak naprawić niech podklasy zaimplementować interfejs fabrycznego, to jest abstrakcyjne Produkt zwrócony.

Kod klucza: proces tworzenia wykonywane w jej podklas.

Przykłady zastosowań: 1, potrzebny jest samochód, można odebrać od wewnątrz fabryki bezpośrednio, bez konieczności rury samochód jest jak to zrobić, a także realizacji wewnątrz samochodu.2, Hibernate bazie wymiany prostu zmieniając dialektem i jazda może być.

Zalety: 1, rozmówca chciał stworzyć obiekt, wystarczy znać jego imię.2, wysoka skalowalność, jeśli chcesz dodać produkt, tak długo, jak rozszerzenie klasy fabryki może być. 3, osłaniając realizacji wyrobu, dzwoniący dotyczy jedynie interfejsu produktu.

Wady: Każde zwiększenie produkt, musimy dodać klas i obiektów, aby osiągnąć konkretny fabryki, więc liczba klas w układzie wzrośnie wykładniczo, w pewnym stopniu zwiększa złożoność systemu, ale również zwiększa specyficzną klasę systemową uzależnienie.To nie jest dobra rzecz.

Scenariusze użycia: 1, Rejestrator: Rejestry mogą być zapisywane na lokalnym dysku twardym, w przypadku systemu, zdalny serwer, użytkownik może wybrać, aby zalogować się gdzieś.2, dostęp do bazy danych, gdy użytkownik nie wie, jaki rodzaj systemu końcowego korzysta z bazy danych, a może zmienić się baza danych. 3, zaprojektować ramy dla połączenia z serwerem, trzeba trzy umowy "POP3", "IMAP", "HTTP", można te trzy postaci kategorii produktów, w celu osiągnięcia wspólnego interfejsu.

Uwaga: W klasie tryb tworzenia, wszędzie tam, gdzie jest to potrzebne do generowania skomplikowanych obiektów, można użyć wzorca Factory Method.Warto zauważyć, że jest to miejsce dla złożonych obiektów z wykorzystaniem wzorca Factory, oraz prostych przedmiotów, w szczególności muszą być wypełnione tylko nowych obiektów tworzonych bez użycia modelu fabrycznego. Jeśli używasz wzór fabryczny, konieczne jest wprowadzenie klasy fabrycznej, będzie to wzrost złożoności systemu.

realizacja

Stworzymy interfejs klasy podmiot i interfejsShapeShape wdrożenie. Następnym krokiem jest zdefiniowanie klasy produkcyjneShapeFactory.

FactoryPatternDemo naszedemo, aby uzyskać klasę używaćShapeFactoryobiektShape.Będzie ona przekazywania informacji(Okrąg/ prostokąt / kwadrat) doShapeFactory,musi uzyskać typ obiektu.

Fabryka wzór diagram UML

Etap 1

Tworzenie interfejsu.

Shape.java

public interface Shape {
   void draw ();
}

Etap 2

Tworzenie klasy podmiotu, który implementuje interfejs.

Rectangle.java

public class Rectangle realizuje Shape {

   @Override
   public void draw () {
      ( "Metoda Wewnątrz prostokąt :: draw ().") System.out.println;
   }
}

Square.java

Plac realizuje public class Shape {

   @Override
   public void draw () {
      ( "Metoda Wewnątrz Plac :: draw ().") System.out.println;
   }
}

Circle.java

Koło realizuje public class Shape {

   @Override
   public void draw () {
      ( "Metoda wewnątrz okręgu :: draw ().") System.out.println;
   }
}

etap 3,

Tworzenie zakładu do produkcji klasy encji obiektu na podstawie podanych informacji.

ShapeFactory.java

{public class ShapeFactory
	
   // Zastosowanie getShape metoda, aby uzyskać obiekt typu Kształt publicznego Shape getShape (String shapeType) {
      if (shapeType == null) {
         powrót null;
      }		
      if (shapeType.equalsIgnoreCase ( "CIRCLE")) {
         powrót nowy krąg ();
      } Else if (shapeType.equalsIgnoreCase ( "prostokąt")) {
         return new Rectangle ();
      } Else if (shapeType.equalsIgnoreCase ( "Kwadrat")) {
         powrót Plac Nowy ();
      }
      powrót null;
   }
}

Etap 4

Użyj fabryki w celu uzyskania obiektu encji klasy, przekazując informacje o typie.

FactoryPatternDemo.java

{public class FactoryPatternDemo

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

      // Pobierz obiekt Circle i wywoła metodę draw Shape shape1 = shapeFactory.getShape ( "Circle");

      // Wywołanie metody przy zaciąganiu shape1.draw Kole ();

      // Pobierz obiekt Rectangle i wywoła metodę draw Shape shape2 = shapeFactory.getShape ( "prostokąt");

      // Wywołanie metody przy zaciąganiu shape2.draw Rectangle ();

      // Pobierz kwadratowego obiektu i wywołać jego metodę draw Shape shape3 = shapeFactory.getShape ( "Kwadrat");

      // Wywołujemy metodę draw Plac shape3.draw ();
   }
}

Etap 5

Sprawdź, czy wyjście.

Metoda Wewnątrz Circle :: draw ().
Metoda Wewnątrz prostokąta :: draw ().
Metoda środku placu :: draw ().