[JAVA] Modèle de conception ~ Méthode d'usine ~

1.Tout d'abord

Voici un résumé du ** modèle de méthode d'usine ** dans le modèle de conception du GoF.

2. Quel est le modèle de méthode d'usine?

3. Exemple de diagramme de classes

FactoryMethod.PNG

4. Exemple de programme

Il s'agit d'un programme pour créer une carte d'identité à partir d'une usine de cartes d'identité.

4-1. Classe d'usine

C'est la classe de base de Factory. Déterminez comment créer une instance.

Factory.java


package framework;

public abstract class Factory {

	public final Product create(String owner) {
        Product product = createProduct(owner);
        registerProduct(product);
        return product;
    }

	protected abstract Product createProduct(String owner);
    protected abstract void registerProduct(Product product);
}

4-2. Classe de produit

Il s'agit de la classe de base des objets créés par Factory.

Product.java


package framework;

public abstract class Product {
    public abstract void use();
}

4-3. Classe IDCardFactory

Une classe concrète qui implémente les méthodes définies dans la classe Factory.

IDCardFactory.java


package idcard;
import java.util.ArrayList;

import framework.Factory;
import framework.Product;

public class IDCardFactory extends Factory {

	private ArrayList<String> owners = new ArrayList<String>();

	protected Product createProduct(String owner) {
        return new IDCard(owner);
    }

	protected void registerProduct(Product product) {
		IDCard icCard = (IDCard)product;
		String owner = icCard.getOwner();
		owners.add(owner);
    }

	public ArrayList<String> getOwners() {
        return owners;
    }
}

4-4. Classe IDCard

Une classe concrète qui implémente les méthodes définies dans la classe Product.

IDCard.java


package idcard;
import framework.Product;

public class IDCard extends Product {

	private String owner;

	IDCard(String owner) {
        System.out.println(owner + "Faites une carte.");
        this.owner = owner;
    }

	public void use() {
        System.out.println(owner + "Utilisez la carte.");
    }

	public String getOwner() {
        return owner;
    }
}

4-5. Classe principale

Cette classe effectue le traitement principal.

Main.java


import framework.*;
import idcard.*;

public class Main {
    public static void main(String[] args) {
        Factory factory = new IDCardFactory();
        Product card1 = factory.create("Yamada");
        Product card2 = factory.create("Suzuki");
        Product card3 = factory.create("Sato");
        card1.use();
        card2.use();
        card3.use();
    }
}

4-6. Résultat de l'exécution

Fabriquez la carte de Yamada.
Je vais faire une carte Suzuki.
Faites la carte de Sato.
J'utiliserai la carte de Yamada.
J'utiliserai la carte de Suzuki.
J'utiliserai la carte de Sato.

5. Avantages

Factory / Product se trouve dans le package framework et IDCardFactory / IDCard est dans le package idcard. Le package de structure n’importe pas le package idcard. En d'autres termes, le ** package framework a une forme ** qui ne dépend pas du package idcard. Si vous essayez de créer un "produit" et une "usine" complètement différents, vous n'avez pas à modifier le contenu du package de framework.

  1. GitHub

7. Liste des modèles de conception

8. Référence

Cet article et exemple de programme ont été créés à partir des livres suivants.

C'était très facile à comprendre et j'ai beaucoup appris. Je vous remercie. Les explications détaillées des modèles de conception et des exemples de programmes sont écrites, veuillez donc également consulter les livres.

Recommended Posts

Modèle de conception ~ Méthode d'usine ~
Modèle de méthode d'usine
Modèle de méthode d'usine
Modèle de conception Java pour débutant (modèle de méthode d'usine)
Modèle de conception ~ Usine abstraite ~
Modèle de conception ~ Méthode de modèle ~
Modèle de conception par la méthode Ruby Template Mémo de modèle
Introduction aux modèles de conception (méthode d'usine)
Modèle de conception mâché C #: TemplateMethod
modèle d'usine abstrait
Modèle de conception ~ Constructeur ~
Modèle de conception ~ Visiteur ~
Modèle de conception Java
Modèle de conception ~ Proxy ~
Modèle de conception ~ État ~
Modèle de conception ~ Stratégie ~
Modèle de conception ~ Singleton ~
Modèle de conception ~ Composite ~
Modèle de conception (2): constructeur
Modèle de conception (1): AbstractFactory
Modèle de conception ~ Commande ~
Modèle d'usine abstraite
Modèle de conception ~ Itérateur ~
Modèle de conception ~ Façade ~
Modèle de conception ~ Pont ~
Modèle de conception ~ Médiateur ~
Modèle de méthode de modèle
Modèle de conception ~ Décorateur ~
Modèle de modèle de méthode
Modèle de conception ~ Interprète ~
Modèle de conception ~ Observateur ~
Modèle de conception ~ Prototype ~
Modèle de conception ~ Memento ~
Modèle de conception ~ Adaptateur ~
Modèle de conception ~ Poids mouche ~
[Modèle de conception] Logique commune avec la méthode de modèle
Modèle de conception C ++ (modèle TemplateMethod)
Méthode d'usine statique partie 1
Résumé du modèle de conception du GoF
Résumé du modèle de conception Java
Repenser les modèles d'expression et de conception de flux Java8 - Modèle de méthode
Modèle de conception ~ Chaîne de responsabilité ~
Point 51: Concevoir soigneusement les signatures de méthode
[Design pattern] Bibliothèque de base Java
Modèles de conception à utiliser avec les bibliothèques Java fréquemment utilisées - Modèle d'usine
Introduction aux modèles de conception (Abstract Factory)
Exemple d'application du modèle de conception (n ° 1)