Explication détaillée des principes et des applications du modèle d'usine Java
Le modèle d'usine est un modèle de conception couramment utilisé, qui est utilisé pour créer des objets et encapsuler le processus de création d'objets. Il existe de nombreuses façons d'implémenter le modèle d'usine en Java, les plus courantes étant le modèle d'usine simple, le modèle de méthode d'usine et le modèle d'usine abstrait. Cet article présentera en détail les principes et les applications de ces trois modèles d'usine et donnera des exemples de code correspondants.
1. Modèle d'usine simple
Le modèle d'usine simple est le modèle d'usine le plus simple et le plus couramment utilisé. Il utilise une classe d'usine pour renvoyer différents objets instanciés en fonction des paramètres transmis. L'idée principale du modèle d'usine simple est d'encapsuler le processus de création d'objet afin que l'appelant n'ait pas besoin de se soucier des détails de création d'objet.
Un exemple simple est donné ci-dessous. Supposons que nous ayons une classe de calculatrice Calculatrice, qui a les fonctions d'addition et de soustraction :
public class Calculator { public double add(double a, double b) { return a + b; } public double subtract(double a, double b) { return a - b; } }
Nous pouvons utiliser le modèle d'usine simple pour créer une instance de Calculatrice :
public class CalculatorFactory { public static Calculator createCalculator() { return new Calculator(); } }
Puis dans Cette usine la classe est utilisée dans le code client pour créer une instance de Calculatrice :
public class Client { public static void main(String[] args) { Calculator calculator = CalculatorFactory.createCalculator(); double result = calculator.add(1.0, 2.0); System.out.println(result); } }
Grâce au code ci-dessus, nous pouvons voir qu'en utilisant le modèle d'usine simple, le code client n'a pas besoin d'appeler directement new Calculator()
pour créer une instance de Calculatrice, mais en appelant les méthodes CalculatorFactory Static pour créer des instances. L'avantage est que le code client a seulement besoin de savoir utiliser les fonctions de la Calculatrice et n'a pas besoin de se soucier de son processus de création spécifique.
2. Modèle de méthode d'usine
Le modèle de méthode d'usine encapsule le processus de création d'objet dans l'interface d'usine, et les étapes de création spécifiques sont implémentées par des classes d'usine spécifiques. Dans le modèle de méthode d'usine, chaque classe d'usine concrète est uniquement responsable de la création d'objets produit spécifiques.
Ce qui suit est un exemple d'implémentation du modèle de méthode d'usine. Supposons que nous ayons une pizzeria qui propose différents types de pizza, tels que CheesePizza et PepperoniPizza :
Tout d'abord, nous définissons une interface de pizza :
public interface Pizza { void prepare(); void bake(); void cut(); void box(); }
Ensuite, nous définissons Classe de pizzas spécifiques :
public class CheesePizza implements Pizza { @Override public void prepare() { System.out.println("Preparing Cheese Pizza"); } @Override public void bake() { System.out.println("Baking Cheese Pizza"); } @Override public void cut() { System.out.println("Cutting Cheese Pizza"); } @Override public void box() { System.out.println("Boxing Cheese Pizza"); } } public class PepperoniPizza implements Pizza { @Override public void prepare() { System.out.println("Preparing Pepperoni Pizza"); } @Override public void bake() { System.out.println("Baking Pepperoni Pizza"); } @Override public void cut() { System.out.println("Cutting Pepperoni Pizza"); } @Override public void box() { System.out.println("Boxing Pepperoni Pizza"); } }
Ensuite, nous définissons une interface de fabrique de pizza :
public interface PizzaFactory { Pizza createPizza(); }
Ensuite, nous implémentons deux classes de fabrique de pizza spécifiques :
public class CheesePizzaFactory implements PizzaFactory { @Override public Pizza createPizza() { return new CheesePizza(); } } public class PepperoniPizzaFactory implements PizzaFactory { @Override public Pizza createPizza() { return new PepperoniPizza(); } }
Enfin, utilisons la fabrique de pizza dans le code client pour créer une instance de pizza :
public class Client { public static void main(String[] args) { PizzaFactory pizzaFactory = new CheesePizzaFactory(); Pizza pizza = pizzaFactory.createPizza(); pizza.prepare(); pizza.bake(); pizza.cut(); pizza.box(); } }
Grâce au code ci-dessus, nous pouvons voir qu'en utilisant le modèle de méthode d'usine, le code client n'a qu'à se soucier du type d'usine à pizza et à appeler sa méthode de création pour créer l'objet pizza correspondant. De cette façon, lors de l'ajout d'un nouveau type de pizza, il suffit d'ajouter une classe de pizza spécifique et la classe de pizza factory correspondante sans modifier le code client.
3. Modèle d'usine abstrait
Le modèle d'usine abstrait est une extension du modèle de méthode d'usine. Il définit un ensemble d'interfaces d'usine liées ou dépendantes via des classes d'usine abstraites implémentent ces interfaces et produisent différents produits en fonction de différents besoins. . Le produit.
Ce qui suit est un exemple d'implémentation du modèle d'usine abstrait. Supposons que nous ayons une usine informatique capable de produire des ordinateurs de différentes marques, tels que des ordinateurs Dell et des ordinateurs Lenovo :
Tout d'abord, nous définissons l'interface informatique et les classes informatiques spécifiques :
public interface Computer { void use(); } public class DellComputer implements Computer { @Override public void use() { System.out.println("Using Dell computer"); } } public class LenovoComputer implements Computer { @Override public void use() { System.out.println("Using Lenovo computer"); } }
Ensuite, nous définissons l'interface de l'usine informatique abstraite :
public interface ComputerFactory { Computer createComputer(); }
Ensuite, nous implémentons respectivement les classes spécifiques de l'usine informatique :
public class DellComputerFactory implements ComputerFactory { @Override public Computer createComputer() { return new DellComputer(); } } public class LenovoComputerFactory implements ComputerFactory { @Override public Computer createComputer() { return new LenovoComputer(); } }
Enfin, utilisons l'usine abstraite dans le code client pour créer des instances informatiques de différentes marques :
public class Client { public static void main(String[] args) { ComputerFactory dellComputerFactory = new DellComputerFactory(); Computer dellComputer = dellComputerFactory.createComputer(); dellComputer.use(); ComputerFactory lenovoComputerFactory = new LenovoComputerFactory(); Computer lenovoComputer = lenovoComputerFactory.createComputer(); lenovoComputer.use(); } }
Grâce au code ci-dessus, nous pouvons voir qu'en utilisant le modèle d'usine abstraite, le code client n'a besoin que de savoir comment utiliser la classe d'usine abstraite et l'interface réelle du produit, sans se soucier de la classe d'usine spécifique et des détails d'implémentation du produit. De cette façon, si vous devez ajouter une nouvelle marque d'ordinateur, il vous suffit d'ajouter une classe d'ordinateur spécifique et la classe d'usine informatique correspondante sans modifier le code client.
Résumé :
Cet article présente en détail les principes et les applications du modèle d'usine en Java, y compris le modèle d'usine simple, le modèle de méthode d'usine et le modèle d'usine abstrait. Le modèle d'usine simple convient à la création d'un seul type d'objet ; le modèle de méthode d'usine convient à la création d'un groupe d'objets avec une relation d'héritage ; le modèle d'usine abstrait convient à la création d'un groupe d'objets avec une relation associée. En utilisant le modèle d'usine, nous pouvons encapsuler le processus de création d'objets, rendant le code client plus concis et plus facile à maintenir et à développer.
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!