Comment implémenter le modèle de méthode d'usine à l'aide du code 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
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!

Outils d'IA chauds

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

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

Undress AI Tool
Images de déshabillage gratuites

Clothoff.io
Dissolvant de vêtements AI

AI Hentai Generator
Générez AI Hentai gratuitement.

Article chaud

Outils chauds

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

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

Sujets chauds

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.

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.

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.

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.

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.

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.

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.

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
