Table des matières
1. Introduction au modèle de méthode d'usine
2. Diagramme de classes de modèle de méthode d'usine UML
3. Description du rôle du modèle de méthode d'usine
4. Implémentation du code
5. Explorez à nouveau le modèle d'usine
6. Avantages et inconvénients
7 Scénarios d'application
Maison Java javaDidacticiel 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

May 16, 2023 pm 05:46 PM
java

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();
    }
}
Copier après la connexion

. Méthode d'appel :

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

        Product product1 = new ConcreteFactory2().createProduct();
        product1.show();
Copier après la connexion

É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 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

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

AI Hentai Generator

AI Hentai Generator

Générez AI Hentai gratuitement.

Article chaud

R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
2 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Repo: Comment relancer ses coéquipiers
4 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island Adventure: Comment obtenir des graines géantes
4 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Combien de temps faut-il pour battre Split Fiction?
3 Il y a quelques semaines By DDD

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Racine carrée en Java Racine carrée en Java Aug 30, 2024 pm 04:26 PM

Guide de la racine carrée en Java. Nous discutons ici du fonctionnement de Square Root en Java avec un exemple et son implémentation de code respectivement.

Nombre parfait en Java Nombre parfait en Java Aug 30, 2024 pm 04:28 PM

Guide du nombre parfait en Java. Nous discutons ici de la définition, comment vérifier le nombre parfait en Java ?, des exemples d'implémentation de code.

Générateur de nombres aléatoires en Java Générateur de nombres aléatoires en Java Aug 30, 2024 pm 04:27 PM

Guide du générateur de nombres aléatoires en Java. Nous discutons ici des fonctions en Java avec des exemples et de deux générateurs différents avec d'autres exemples.

Weka en Java Weka en Java Aug 30, 2024 pm 04:28 PM

Guide de Weka en Java. Nous discutons ici de l'introduction, de la façon d'utiliser Weka Java, du type de plate-forme et des avantages avec des exemples.

Numéro Armstrong en Java Numéro Armstrong en Java Aug 30, 2024 pm 04:26 PM

Guide du numéro Armstrong en Java. Nous discutons ici d'une introduction au numéro d'Armstrong en Java ainsi que d'une partie du code.

Numéro de Smith en Java Numéro de Smith en Java Aug 30, 2024 pm 04:28 PM

Guide du nombre de Smith en Java. Nous discutons ici de la définition, comment vérifier le numéro Smith en Java ? exemple avec implémentation de code.

Questions d'entretien chez Java Spring Questions d'entretien chez Java Spring Aug 30, 2024 pm 04:29 PM

Dans cet article, nous avons conservé les questions d'entretien Java Spring les plus posées avec leurs réponses détaillées. Pour que vous puissiez réussir l'interview.

Break or Return of Java 8 Stream Forach? Break or Return of Java 8 Stream Forach? Feb 07, 2025 pm 12:09 PM

Java 8 présente l'API Stream, fournissant un moyen puissant et expressif de traiter les collections de données. Cependant, une question courante lors de l'utilisation du flux est: comment se casser ou revenir d'une opération FOREAK? Les boucles traditionnelles permettent une interruption ou un retour précoce, mais la méthode Foreach de Stream ne prend pas directement en charge cette méthode. Cet article expliquera les raisons et explorera des méthodes alternatives pour la mise en œuvre de terminaison prématurée dans les systèmes de traitement de flux. Lire plus approfondie: Améliorations de l'API Java Stream Comprendre le flux Forach La méthode foreach est une opération terminale qui effectue une opération sur chaque élément du flux. Son intention de conception est

See all articles