Maison  >  Article  >  Java  >  Comment implémenter le modèle de méthode d'usine à l'aide du code Java

Comment implémenter le modèle de méthode d'usine à l'aide du code Java

WBOY
WBOYavant
2023-05-16 17:46:15826parcourir

1. Introduction au modèle de méthode d'usine

Définition : Le modèle de méthode d'usine est une abstraction supplémentaire du modèle d'usine simple. L'avantage est qu'il peut introduire de nouveaux produits dans le système sans modifier le code d'origine, c'est-à-dire qu'il satisfait. le principe d'ouverture et de fermeture. Créez une interface pour l'instanciation d'objet et laissez la sous-classe décider quelle classe est instanciée, reportant ainsi le processus d'instanciation de classe à la sous-classe.

2. Diagramme de classes de modèle de méthode d'usine UML

Comment implémenter le modèle de méthode dusine à laide du code Java

3. Description du rôle du modèle de méthode d'usine

Usine abstraite (AbstractFactory) : fournit une interface pour créer des produits, via laquelle l'appelant accède à la méthode d'usine de l'usine spécifique. créer le produit

Concrete Factory (ConcreteFactory) : met en œuvre les méthodes définies par l'usine abstraite et finalise la création de produits spécifiques

Abstract Product (Product) : définit les spécifications du produit et décrit les principales caractéristiques et performances du produit

Concrete Product (ConcreteProduct) : il implémente la méthode de définition des produits abstraits. Il existe des usines spécifiques pour créer des produits. Des usines spécifiques et des produits spécifiques correspondent un à un

4. Implémentation du code

Implémentation du modèle de méthode d'usine :

/**
 * 抽象工厂:提供具体工厂的共有方法
 */
public interface Product {
    public void show();
}

public class ConcreteProduct1 implements Product {
    @Override
    public void show() {
        System.out.println("具体产品1展示...");
    }
}

public class ConcreateProduct2 implements Product {
    @Override
    public void show() {
        System.out.println("具体产品2展示...");
    }
}


/**
 * 抽象工厂
 */
public interface AbstractFactory {
    public Product createProduct();
}

/**
 * 具体工厂1产生具体产品1
 */
public class ConcreteFactory1 implements AbstractFactory {
    @Override
    public Product createProduct() {
        ConcreteProduct1 concreteProduct1 = new ConcreteProduct1();
        System.out.println("具体工厂1创建具体产品1...");
        return concreteProduct1;
    }
    
public class ConcreteFactory2 implements AbstractFactory {
    @Override
    public Product createProduct() {
        System.out.println("具体工厂2产生具体产品2...");
        return new ConcreateProduct2();
    }
}

. Méthode d'appel :

//获取具体产品1
        Product product = new ConcreteFactory1().createProduct();
        product.show();

        Product product1 = new ConcreteFactory2().createProduct();
        product1.show();

Étapes d'utilisation :

  • Créez une classe de produit abstraite et définissez les méthodes publiques du produit

  • Créez une classe de produit concrète (implémentez l'interface de produit abstraite) et définissez le produit spécifique généré

  • Créez une classe d'usine abstraite et définissez l'interface publique de l'usine spécifique

  • Créez une classe d'usine spécifique et définissez la méthode pour créer l'instance de produit spécifique correspondante

  • L'appelant appelle la méthode de la classe d'usine spécifique pour créer des instances de différents produits spécifiques

5. Explorez à nouveau le modèle d'usine

Résolution de problèmes : Résolution du problème de logique de méthode consistant à modifier la logique de méthode de la classe d'usine lors de l'ajout de nouveaux produits à la classe d'usine simple, qui est la principe spécial d'ouverture et de fermeture.

Quittez la création de produits spécifiques vers la sous-classe de la classe factory (usine spécifique). A ce moment, la classe factory n'est plus responsable de la création de tous les produits, mais donne l'interface que l'usine spécifique doit implémenter, pour que la méthode factory ajoute de nouveaux produits, il n'est pas nécessaire de modifier la logique de la classe factory, mais d'ajouter une nouvelle sous-classe factory, qui est conforme au principe d'ouverture et de fermeture.

6. Avantages et inconvénients

Avantages :

  • Grande flexibilité pour la création de nouveaux produits, il vous suffit d'écrire une classe d'usine correspondante supplémentaire

  • Les utilisateurs n'ont qu'à indiquer le nom de l'usine. obtenir le produit souhaité, il n'est pas nécessaire de guider le processus de création spécifique du produit

Inconvénients :

  • Le nombre de classes est facile à être trop élevé, ce qui augmente la complexité

  • Chaque usine peut ne produisez qu'un seul type de produit, le prochain inconvénient est que vous pouvez utiliser une solution abstraite de modèle d'usine

7 Scénarios d'application

Les clients ne se soucient que du nom de l'usine qui crée le produit et n'ont pas besoin de connaître le nom spécifique. nom du produit

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!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer