Petite discussion sur les modèles de conception (2) – Modèle d'usine simple

Introduction de la colonne

Adresse de la colonne

lien

Introduction de la colonne

Il analyse et résume principalement un par un les 23 modèles de conception courants actuellement sur le marché. J'espère que les amis intéressés pourront y jeter un œil et qu'il sera continuellement mis à jour. J'espère que vous pourrez m'encadrer et que nous pourrons apprendre et progresser ensemble.
Insérer la description de l'image ici

Modèle d'usine simple

Simple Factory Pattern est un modèle de conception créationnel qui fournit le meilleur moyen de créer des objets. En encapsulant la logique de création d'objet dans une classe d'usine, le client n'a pas besoin de connaître les détails spécifiques de la création. , il suffit de demander l'objet requis à la classe d'usine. .

Composition de modèle d'usine simple

Dans le modèle d’usine simple, trois rôles principaux sont impliqués : les produits abstraits, les produits concrets et les usines simples.

Produit abstrait

Le produit abstrait est l'interface commune de classes de produits spécifiques, qui définit les méthodes communes du produit. Un produit abstrait peut être une interface ou une classe abstraite, et l'implémentation spécifique est complétée par la classe de produit spécifique.

Produit en béton

Un produit concret est une classe d'implémentation d'un produit abstrait, qui implémente les méthodes définies dans le produit abstrait. Dans le modèle d’usine simple, chaque produit spécifique correspond à une catégorie de produits spécifique.

Usine simple

Une usine simple est une classe qui contient des méthodes statiques qui créent des objets produit. Il crée l'objet produit spécifique correspondant en fonction de la demande du client et le renvoie au client pour utilisation. Une simple usine cache les détails de la création d'objets. Le client n'a qu'à obtenir les objets requis via la classe d'usine sans instancier directement la classe de produit spécifique.
Insérer la description de l'image ici

La relation entre les trois

1. Les produits abstraits standardisent le comportement de produits spécifiques en définissant l'interface commune du produit.
2. Le produit spécifique est la classe d'implémentation du produit abstrait et est responsable de l'implémentation des méthodes définies dans le produit abstrait.
3. En tant que classe d'usine, l'usine simple encapsule le processus de création d'objet. Il crée l'objet produit spécifique correspondant en fonction de la demande du client et le renvoie au client pour utilisation.

idée principale

Encapsulez le processus de création d'objet dans une classe d'usine, et le client n'a qu'à obtenir l'objet requis via la méthode statique de la classe d'usine sans instancier directement la classe de produit spécifique. Cela peut réduire le couplage entre le client et des catégories de produits spécifiques et faciliter l’expansion et la maintenance des types de produits.
Insérer la description de l'image ici

Implémentation du code Java

Tout d’abord, nous définissons une interface de produit abstraite Product, qui contient une méthode abstraite use() :

public interface Product {
    
    
    void use();
}

Ensuite, nous créons deux classes de produits concrètes, ProductA et ProductB, qui implémentent l'interface produit abstraite Product :

public class ProductA implements Product {
    
    
    @Override
    public void use() {
    
    
        System.out.println("Product A is being used.");
    }
}

public class ProductB implements Product {
    
    
    @Override
    public void use() {
    
    
        System.out.println("Product B is being used.");
    }
}

Insérer la description de l'image ici

Ensuite, nous créons une classe d'usine simple SimpleFactory, qui contient une méthode statique createProduct (String type) pour créer l'objet produit correspondant en fonction du type de paramètre entrant :

public class SimpleFactory {
    
    
    public static Product createProduct(String type) {
    
    
        if (type.equals("A")) {
    
    
            return new ProductA();
        } else if (type.equals("B")) {
    
    
            return new ProductB();
        }
        return null;
    }
}

Enfin, nous pouvons utiliser le modèle d'usine simple dans le code client pour créer des objets produit concrets :

//客户端
public class Client {
    
    
    public static void main(String[] args) {
    
    
        Product productA = SimpleFactory.createProduct("A");
        productA.use();  // Output: Product A is being used.

        Product productB = SimpleFactory.createProduct("B");
        productB.use();  // Output: Product B is being used.
    }
}

Insérer la description de l'image ici

analyse de code

Le client crée un objet produit spécifique en appelant la méthode SimpleFactory.createProduct() sans instancier directement la classe de produit spécifique. De cette manière, le couplage entre le client et des produits spécifiques est réduit, et cela facilite également l'expansion et la maintenance des types de produits.

La classe de fabrique simple SimpleFactory contient une méthode statique createProduct (String type), qui crée l'objet produit correspondant en fonction du type de paramètre transmis. Dans les applications réelles, une logique plus complexe peut être utilisée pour créer des objets en fonction de besoins spécifiques, comme la lecture de fichiers de configuration ou de bases de données pour déterminer le produit spécifique à créer.

Dans le code client, nous créons l'objet produit spécifique en appelant la méthode SimpleFactory.createProduct(). Le client a seulement besoin de connaître le type de produit et n'a pas besoin de se soucier des détails spécifiques de la création. Cela peut réduire le couplage entre le client et des catégories de produits spécifiques et faciliter l’expansion et la maintenance des types de produits.

Analyse des avantages et des inconvénients

avantage

Encapsule le processus de création d'objet

Le modèle d'usine simple encapsule le processus de création d'objet dans une classe d'usine. Le client a seulement besoin de connaître le type de produit et n'a pas besoin de se soucier des détails spécifiques de la création. Cela peut réduire la complexité du client et faciliter l’expansion et la maintenance des types de produits.

Réduit le couplage entre le client et des catégories de produits spécifiques

Le client doit uniquement obtenir les objets requis via la classe d'usine sans instancier directement la classe de produit spécifique. Cela peut réduire la dépendance entre le client et des classes de produits spécifiques, rendant le code client plus flexible et plus maintenable.
Insérer la description de l'image ici

Facilite l’expansion et la maintenance des types de produits

Dans le modèle d'usine simple, si vous devez ajouter un nouveau type de produit, il vous suffit de modifier le code de la classe d'usine. Cela facilite l'ajout de nouveaux types de produits sans modifier le code client. Dans le même temps, il facilite également la maintenance des types de produits et gère de manière centralisée le processus de création d'objets.

défaut

Viole le principe d'ouverture-fermeture

Dans le modèle d'usine simple, lors de l'ajout d'un nouveau type de produit, le code de la classe d'usine doit être modifié. Cela viole le principe ouvert-fermé et la modification du code existant peut introduire de nouveaux risques. Par conséquent, si le type de produit change fréquemment, le modèle d’usine simple ne convient pas.

Les responsabilités de l'usine sont trop lourdes

Dans le modèle d'usine simple, la classe d'usine est responsable de la création de tous les objets produit. À mesure que les types de produits augmentent, le code de la classe usine deviendra de plus en plus complexe et aura des responsabilités surchargées. Cela viole le principe de responsabilité unique et n'est pas propice à la maintenance et à l'expansion du code.

Résumer

Le modèle d'usine simple est un modèle de conception créationnel simple et couramment utilisé, adapté aux scénarios dans lesquels il y a moins d'objets relativement simples à créer. Il encapsule le processus de création d'objets, réduit la complexité du client et facilite l'expansion et la maintenance des types de produits. Cependant, le modèle d’usine simple viole le principe d’ouverture-fermeture et ne convient pas aux situations dans lesquelles les types de produits changent fréquemment. En outre, la surcharge de responsabilités de la classe industrielle constitue également l’un de ses défauts. Par conséquent, dans les applications pratiques, il est nécessaire de choisir le mode de création approprié en fonction de la situation spécifique.

Insérer la description de l'image ici

Je suppose que tu aimes

Origine blog.csdn.net/weixin_74888502/article/details/132873745
conseillé
Classement