Latest web development tutorials

modalità di fabbrica

modello di fabbrica (Factory Pattern) Java è uno dei design pattern più comunemente utilizzati. Questo tipo di modelli di progettazione appartengono creare schema, che fornisce il modo migliore per creare oggetti.

In modalità di fabbrica, non esporre il cliente di creare una logica quando si crea un oggetto, e attraverso l'utilizzo di un'interfaccia comune per puntare l'oggetto appena creato.

introduzione

Intento: La definizione di interfaccia di un oggetto creato, lasciate sottoclassi decidere quale classe istanziare una fabbrica, il modello di fabbrica per rendere il processo di creazione del ritardo alla sottoclasse.

Principalmente per risolvere: Il problema principale delle opzioni di interfaccia.

Quando utilizzare: quando creiamo esplicitamente casi diversi sotto piano di diverse condizioni.

Come risolvere: lasciare sottoclassi per implementare l'interfaccia fabbrica, è un prodotto astratto restituito.

Il codice chiave: il processo di creazione eseguito nelle sue sottoclassi.

Esempi di applicazione: 1, hai bisogno di una macchina, si può prendere da dentro la fabbrica direttamente, senza dover pipe l'auto è come farlo, così come l'attuazione all'interno della vettura.2, database di Exchange Hibernate semplicemente cambiando il dialetto e la guida può essere.

Vantaggi: 1, un chiamante ha voluto creare un oggetto, basta conoscere il suo nome su di esso.2, alta scalabilità, se si desidera aggiungere un prodotto, purché l'espansione di una classe fabbrica può essere. 3, schermatura realizzazione del prodotto, il chiamante interessato solo con l'interfaccia del prodotto.

Svantaggi: ogni aumento di un prodotto, è necessario aggiungere classi e oggetti per realizzare una fabbrica di cemento, quindi il numero di classi nei sistema aumenta in modo esponenziale, in una certa misura, aumentato la complessità del sistema, ma aumenta anche la classe specifica system la dipendenza.Questa non è una buona cosa.

scenari di utilizzo: 1, Logger: I registri possono essere registrati sul disco rigido locale, l'evento di sistema, server remoto, l'utente può scegliere di accedere da qualche parte.2, l'accesso al database, quando l'utente non sa che tipo di sistema finale utilizza un database, e il database potrebbe cambiare. 3, la progettazione di un quadro di riferimento per la connessione al server, è necessario tre accordi, "POP3", "IMAP", "http", possono questi tre come una categoria di prodotto, per ottenere una interfaccia comune.

Nota: Come classe modalità di creare, ovunque sia necessario per generare oggetti complessi, è possibile utilizzare il modello di metodo factory.Una cosa da notare è che il posto per oggetti complessi utilizzando il modello di fabbrica, e oggetti semplici, in particolare, deve essere compilata soltanto dai nuovi oggetti creati senza l'uso del modello di fabbrica. Se si utilizza il modello di fabbrica, è necessario introdurre una classe di fabbrica, aumenterà la complessità del sistema.

realizzazione

Creeremo un'interfaccia classe di entità e l'interfacciaFormaForma implementazione. Il passo successivo è quello di definire le classi di fabbricaShapeFactory.

FactoryPatternDemo,la nostra demo per arrivare classe da utilizzare oggettoShapeShapeFactory. Sarà la trasmissione di informazioni(cerchi/ rettangoli / quadrati) perShapeFactory,ha bisogno di ottenere il tipo di oggetto.

pattern Factory diagramma UML

fase 1

Creare un'interfaccia.

Shape.java

Forma interfaccia pubblica {
   void draw ();
}

fase 2

Creare classe di entità che implementa l'interfaccia.

Rectangle.java

public class Rettangolo implementa Shape {

   @Override
   draw public void () {
      ( "Metodo all'interno rettangolo :: draw ().") System.out.println;
   }
}

Square.java

public class Piazza implementa Shape {

   @Override
   draw public void () {
      ( "Metodo all'interno Piazza :: draw ().") System.out.println;
   }
}

Circle.java

public class Circle implementa Shape {

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

fase 3

Creare una fabbrica per produrre le classi oggetto entità basate sulle informazioni fornite.

ShapeFactory.java

public class ShapeFactory {
	
   // Usa metodo per ottenere un oggetto di tipo forma pubblica Forma getShape (String shapeType) getShape {
      if (shapeType == null) {
         restituire null;
      }		
      if (shapeType.equalsIgnoreCase ( "Circle")) {
         return new Circle ();
      } Else if (shapeType.equalsIgnoreCase ( "Rettangolo")) {
         return new Rectangle ();
      } Else if (shapeType.equalsIgnoreCase ( "Square")) {
         restituire nuova Square ();
      }
      restituire null;
   }
}

fase 4

Utilizzare la fabbrica per ottenere un oggetto entità della classe passando informazioni sul tipo.

FactoryPatternDemo.java

public class FactoryPatternDemo {

   Main (string [] args) {public static void
      ShapeFactory shapeFactory = new ShapeFactory ();

      // Ottenere l'oggetto Circle, e chiamare il suo metodo draw Forma Shape1 = shapeFactory.getShape ( "CIRCLE");

      // Chiamare il metodo draw di shape1.draw Circle ();

      // Ottenere l'oggetto Rectangle, e chiamare la sua shape2 metodo draw Forma = shapeFactory.getShape ( "Rettangolo");

      // Chiamare il metodo draw di shape2.draw Rettangolo ();

      // Ottenere l'oggetto piazza, e chiamare il suo metodo draw Forma shape3 = shapeFactory.getShape ( "Square");

      // Chiamare il metodo draw Piazza shape3.draw ();
   }
}

fase 5

Verifica uscita.

All'interno metodo Circle :: draw ().
metodo all'interno rettangolo :: draw ().
All'interno metodo Piazza :: draw ().