Latest web development tutorials

Mode usine

motif Factory (Pattern usine) Java est l'un des modèles de conception les plus couramment utilisés. Ce type de modèles de conception appartiennent create schema, qui fournit la meilleure façon de créer des objets.

En mode Factory, nous ne pourrons pas exposer le client à créer une logique lorsque vous créez un objet, et par l'utilisation d'une interface commune pour pointer vers l'objet nouvellement créé.

introduction

Intention: La définition de l'interface d'un objet créé, laissez -les sous - classes décident quelle classe instancier une usine, le modèle d'usine pour rendre le processus de création du retard à la sous-classe.

Principalement pour résoudre: Le principal problème des options d'interface.

Quand l'utiliser: lorsque nous créons explicitement des instances différentes dans différentes conditions plan.

Comment fixer: laisser les sous - classes pour mettre en œuvre l'interface de l' usine, il est un produit abstrait retourné.

Le code clé: le processus de création exécuté dans ses sous - classes.

Exemples d'application: 1, vous avez besoin d' une voiture, vous pouvez ramasser de l' intérieur de l'usine directement, sans avoir à tuyau la voiture est comment le faire, ainsi que la mise en œuvre à l' intérieur de la voiture.2, la base de données d'échange Hibernate changeant simplement le dialecte et la conduite peuvent être.

Avantages: 1, un appelant a voulu créer un objet, il suffit de savoir son nom.2, une grande évolutivité, si vous souhaitez ajouter un produit, aussi longtemps que l'expansion d'une classe d'usine peut être. 3, le blindage réalisation du produit, l'appelant ne concerne que l'interface du produit.

Inconvénients: chaque augmentation d' un produit, il faut ajouter des classes et des objets pour réaliser une usine de béton, de sorte que le nombre de classes dans le système augmente de façon exponentielle, dans une certaine mesure, l' augmentation de la complexité du système, mais augmente également la classe spécifique du système dépendance.Ce ne sont pas une bonne chose.

Scénarios d' utilisation:1, Logger: Les dossiers peuvent être enregistrés sur votre disque dur local, l'événement système, serveur distant, l'utilisateur peut choisir de se connecter quelque part. 2, l'accès de base de données, lorsque l'utilisateur ne sait pas quel genre de système final utilise une base de données, et la base de données pourrait changer. 3, concevoir un cadre pour la connexion au serveur, vous avez besoin de trois accords, "POP3", "IMAP", "HTTP", peut ces trois comme une catégorie de produits, pour parvenir à une interface commune.

Remarque: En tant que classe mode création, partout où il est nécessaire de générer des objets complexes, vous pouvez utiliser le modèle de la méthode de l' usine.Une chose à noter est que l'endroit pour les objets complexes en utilisant le modèle de l'usine, et des objets simples, en particulier, ne doit être complétée par de nouveaux objets créés sans l'utilisation du modèle d'usine. Si vous utilisez le modèle de l'usine, il est nécessaire d'introduire une classe de fabrique, il va augmenter la complexité du système.

réalisation

Nous allons créer une interface de classe d'entité et de l' interfaceShapeShape de mise en œuvre. L'étape suivante consiste à définir des classes d'usineShapeFactory.

FactoryPatternDemo,notre démo pour obtenir la classe à utiliser objetShapeShapeFactory. Il transmet des informations(CIRCLE/ RECTANGLE / SQUARE) àShapeFactory,il a besoin d'obtenir le type d'objet.

motif usine diagramme UML

Etape 1

Créer une interface.

Shape.java

public interface Shape {
   void draw ();
}

Etape 2

Créer classe d'entité qui implémente l'interface.

Rectangle.java

public class Rectangle implémente Shape {

   @Override
   tirage public void () {
      ( "Méthode Inside Rectangle :: draw ().") System.out.println;
   }
}

Square.java

public class place implémente Shape {

   @Override
   tirage public void () {
      ( "Méthode Inside Place :: draw ().") System.out.println;
   }
}

Circle.java

Cercle public class implémente Shape {

   @Override
   tirage public void () {
      ( "Méthode Inside Cercle :: draw ().") System.out.println;
   }
}

Etape 3

Créer une usine pour produire les classes d'entité d'objet sur la base des informations données.

ShapeFactory.java

public class ShapeFactory {
	
   // Utiliser la méthode pour obtenir un objet de type forme Forme publique getShape (String shapeType) getShape {
      if (shapeType == null) {
         return null;
      }		
      if (shapeType.equalsIgnoreCase ( "CIRCLE")) {
         return new Cercle ();
      } Else if (shapeType.equalsIgnoreCase ( "RECTANGLE")) {
         return new Rectangle ();
      } Else if (shapeType.equalsIgnoreCase ( "SQUARE")) {
         return new Carré ();
      }
      return null;
   }
}

Etape 4

Utilisez l'usine pour obtenir un objet d'entité de la classe par la transmission d'informations de type.

FactoryPatternDemo.java

public class FactoryPatternDemo {

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

      // Obtenir l'objet Circle, et appeler sa méthode draw Forme shape1 = shapeFactory.getShape ( "CIRCLE");

      // Appel de la méthode de tirage de shape1.draw Cercle ();

      // Obtenir l'objet Rectangle, et appeler sa shape2 méthode draw Shape = shapeFactory.getShape ( "RECTANGLE");

      // Appel de la méthode de tirage de shape2.draw Rectangle ();

      // Obtenir l'objet Square, et appeler sa méthode draw Forme shape3 = shapeFactory.getShape ( "SQUARE");

      // Appel de la méthode de tirage Place shape3.draw ();
   }
}

Etape 5

Vérifiez la sortie.

Méthode intérieur Cercle :: draw ().
Méthode Inside Rectangle :: draw ().
Méthode Inside Place :: draw ().