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-
Étape 1
Créer une interface -
Shape.java public interface Shape { void draw(); }
É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."); } }
É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; } }
É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(); } }
Étape 5
Le résultat de la vérification est le suivant -
Inside Circle::draw() method. Inside Rectangle::draw() method. Inside Square::draw() method.
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!