Maison > Java > javaDidacticiel > Explication détaillée du cours sur les modèles de conception d'usine Java

Explication détaillée du cours sur les modèles de conception d'usine Java

(*-*)浩
Libérer: 2019-11-26 14:30:46
original
2017 Les gens l'ont consulté

Explication détaillée du cours sur les modèles de conception d'usine Java

Le modèle d'usine est l'un des modèles de conception les plus couramment utilisés en Java. Ce type de modèle de conception est un modèle de création car ce modèle constitue l'un des meilleurs moyens de créer des objets.

Dans le modèle d'usine, nous n'exposons pas la logique de création au client pour créer des objets et utilisons une interface commune pour référencer les objets nouvellement créés.​ (Apprentissage recommandé : cours java)

Méthode d'implémentation

Nous allons créer une interface Shape et une classe concrète qui implémente le Interface de forme. Une classe d'usine ShapeFactory sera définie à l'étape suivante.

FactoryPatternDemo Il s'agit d'une classe de démonstration qui utilisera ShapeFactory pour obtenir un objet Shape. Il transmettra les informations (CERCLE/RECTANGLE/SQUARE) à ShapeFactory pour obtenir le type d'objet requis.

La structure de mise en œuvre du modèle d'usine est présentée dans la figure ci-dessous-

Explication détaillée du cours sur les modèles de conception dusine Java

Étape 1

Créer une interface -

Shape.java
public interface Shape {
   void draw();
}
Copier après la connexion

Étape 2

Créer une classe concrète qui implémente la même interface. Plusieurs classes sont présentées ci-dessous -

Rectangle.java
public class Rectangle implements Shape {
   @Override
   public void draw() {
      System.out.println("Inside Rectangle::draw() method.");
   }
}
Square.java
public class Square implements Shape {
   @Override
   public void draw() {
      System.out.println("Inside Square::draw() method.");
   }
}
Circle.java
public class Circle implements Shape {
   @Override
   public void draw() {
      System.out.println("Inside Circle::draw() method.");
   }
}
Copier après la connexion

Étape 3

Créez une usine pour générer des objets de classes spécifiques en fonction des informations fournies.

ShapeFactory.java
public class ShapeFactory {
   //use getShape method to get object of type shape 
   public Shape getShape(String shapeType){
      if(shapeType == null){
         return null;
      }        
      if(shapeType.equalsIgnoreCase("CIRCLE")){
         return new Circle();
      } else if(shapeType.equalsIgnoreCase("RECTANGLE")){
         return new Rectangle();
      } else if(shapeType.equalsIgnoreCase("SQUARE")){
         return new Square();
      }
      return null;
   }
}
Copier après la connexion

Étape 4

Utilisez l'usine pour obtenir l'objet d'une classe spécifique en transmettant des informations telles que le type.

FactoryPatternDemo.java
public class FactoryPatternDemo {
   public static void main(String[] args) {
      ShapeFactory shapeFactory = new ShapeFactory();
      //get an object of Circle and call its draw method.
      Shape shape1 = shapeFactory.getShape("CIRCLE");
      //call draw method of Circle
      shape1.draw();
      //get an object of Rectangle and call its draw method.
      Shape shape2 = shapeFactory.getShape("RECTANGLE");
      //call draw method of Rectangle
      shape2.draw();
      //get an object of Square and call its draw method.
      Shape shape3 = shapeFactory.getShape("SQUARE");
      //call draw method of circle
      shape3.draw();
   }
}
Copier après la connexion

Étape 5

Le résultat de la vérification est le suivant -

Inside Circle::draw() method.
Inside Rectangle::draw() method.
Inside Square::draw() method.
Copier après la connexion

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal