Hier ist eine Zusammenfassung des ** Factory Method-Musters ** im GoF-Entwurfsmuster.
Dies ist ein Programm zum Erstellen eines Personalausweises aus einer Personalausweisfabrik.
Dies ist die Basisklasse von Factory. Bestimmen Sie, wie eine Instanz erstellt wird.
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);
}
Dies ist die Basisklasse für von Factory erstellte Objekte.
Product.java
package framework;
public abstract class Product {
public abstract void use();
}
Eine konkrete Klasse, die die in der Factory-Klasse definierten Methoden implementiert.
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;
}
}
Eine konkrete Klasse, die die in der Produktklasse definierten Methoden implementiert.
IDCard.java
package idcard;
import framework.Product;
public class IDCard extends Product {
private String owner;
IDCard(String owner) {
System.out.println(owner + "Eine Karte machen.");
this.owner = owner;
}
public void use() {
System.out.println(owner + "Verwenden Sie die Karte.");
}
public String getOwner() {
return owner;
}
}
Diese Klasse führt die Hauptverarbeitung durch.
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();
}
}
Mach Yamadas Karte.
Ich werde eine Suzuki-Karte machen.
Mach Satos Karte.
Ich werde Yamadas Karte benutzen.
Ich werde Suzukis Karte benutzen.
Ich werde Satos Karte benutzen.
Factory / Product befindet sich im Framework-Paket und IDCardFactory / IDCard befindet sich im IDcard-Paket. Das Framework-Paket importiert das IDcard-Paket nicht. Mit anderen Worten, das ** Framework-Paket hat eine ** Form, die nicht vom IDcard-Paket abhängt. Wenn Sie versuchen, ein völlig anderes "Produkt" und "Factory" zu erstellen, müssen Sie den Inhalt des Framework-Pakets nicht ändern.
Dieser Artikel und das Beispielprogramm wurden basierend auf den folgenden Büchern erstellt.
Es war sehr leicht zu verstehen und ich habe viel gelernt. Vielen Dank. Die detaillierten Erklärungen der Entwurfsmuster und Beispielprogramme sind geschrieben. Schauen Sie sich also auch die Bücher an.
Recommended Posts