Maison > Java > javaDidacticiel > Qu'est-ce que le modèle d'usine en Java

Qu'est-ce que le modèle d'usine en Java

小老鼠
Libérer: 2023-12-26 16:15:13
original
1375 Les gens l'ont consulté

En Java, le modèle d'usine est un modèle de conception créationnel qui fournit une interface pour créer des objets, mais c'est à la sous-classe de décider quelle classe instancier. Le modèle d'usine comprend principalement des rôles : 1. Produit abstrait : définit l'interface du produit, et la classe de produit spécifique implémentera cette interface ; 2. Produit spécifique : implémente l'interface du produit abstrait, qui est l'objet créé par le modèle d'usine ; 3. Usine abstraite : déclare Une interface de création de produits est fournie, dans laquelle la méthode factory est utilisée pour instancier un produit ; 4. Usine concrète : implémente l'interface d'usine abstraite et est responsable de l'instanciation de produits spécifiques ;

Qu'est-ce que le modèle d'usine en Java

Le système d'exploitation de ce tutoriel : système Windows 10, ordinateur Dell G3.

En Java, Factory Pattern est un modèle de conception créationnel qui fournit une interface pour créer des objets, mais la sous-classe décide quelle classe instancier. De cette manière, le processus d'instanciation d'une classe est reporté à ses sous-classes, de sorte que l'instanciation d'une classe puisse être déterminée par ses sous-classes.

Le modèle d'usine comprend principalement les rôles suivants :

Produit abstrait (Product) : définit l'interface du produit, et la classe de produit spécifique implémentera cette interface.

Produit en béton : il implémente l'interface du produit abstrait et est un objet créé par le modèle d'usine.

Abstract Factory (Creator) : déclare une interface de création de produits, et la méthode factory est utilisée pour instancier un produit.

Concrete Creator : implémente l'interface d'usine abstraite et est responsable de l'instanciation de produits spécifiques.

Le principal avantage de l'utilisation du modèle d'usine est de dissocier le code client de l'implémentation de classe spécifique. Le client n'a besoin que de connaître les interfaces de l'usine abstraite et des produits abstraits, mais n'a pas besoin de connaître les détails d'implémentation de. les produits spécifiques.

Ce qui suit est un exemple simple de modèle d'usine :

// 抽象产品
interface Product {
    void display();
}
// 具体产品A
class ConcreteProductA implements Product {
    @Override
    public void display() {
        System.out.println("Product A");
    }
}
// 具体产品B
class ConcreteProductB implements Product {
    @Override
    public void display() {
        System.out.println("Product B");
    }
}
// 抽象工厂
interface Creator {
    Product createProduct();
}
// 具体工厂A,用于创建ProductA
class ConcreteCreatorA implements Creator {
    @Override
    public Product createProduct() {
        return new ConcreteProductA();
    }
}
// 具体工厂B,用于创建ProductB
class ConcreteCreatorB implements Creator {
    @Override
    public Product createProduct() {
        return new ConcreteProductB();
    }
}
// 客户端代码
public class Client {
    public static void main(String[] args) {
        Creator creatorA = new ConcreteCreatorA();
        Product productA = creatorA.createProduct();
        productA.display();  // 输出: Product A
        Creator creatorB = new ConcreteCreatorB();
        Product productB = creatorB.createProduct();
        productB.display();  // 输出: Product B
    }
}
Copier après la connexion


Dans cet exemple, Product est une interface de produit abstraite, et ConcreteProductA et ConcreteProductB sont des implémentations de produits spécifiques. Creator est une interface d'usine abstraite, et ConcreteCreatorA et ConcreteCreatorB sont des implémentations d'usines concrètes. Le client crée une instance d'un produit spécifique en appelant la méthode d'usine de l'usine spécifique sans instancier directement la classe de produit spécifique. De cette façon, si vous devez modifier l'implémentation du produit, il vous suffit de modifier l'implémentation de l'usine spécifique sans affecter le code client.

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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal