Voici un résumé du ** modèle de méthode d'usine ** dans le modèle de conception du GoF.
Il s'agit d'un programme pour créer une carte d'identité à partir d'une usine de cartes d'identité.
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);
}
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();
}
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;
}
}
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;
}
}
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();
}
}
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.
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.
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