English English

Java Pattern Factory - Kapseln Sie die Erstellung einer Klasseninstanz

Das Pattern (Muster) "Factory" kann in Fällen verwendet werden, in denen der Erstellungsprozess einer Objektinstanz einer Klasse zu kompliziert ist oder getrennt werden sollte.

In diesem Muster gibt es ein Interface, das durch Unterklassen implementiert wird, die von einer Factory-Klasse (in diesem Beispiel: "TruckFactory") verwendet werden. Wenn Sie eine neue Instanz anlegen wollen, dann müssen Sie eine Funktion aufrufen (in diesem Beispiel: "TruckFactory"): "getTruck(String truckManifacturer)" in der Instanz Ihrer Factory-Klasse (Fabrikklasse) aufrufen, die Ihnen Ihre neue Objektinstanz zurückgibt. Die neue Objektinstanz wird von der Oberklasse, die die Schnittstelle darstellt, referenziert.

Ein Aufruf zur Erzeugung einer Objektinstanz würde dies wünschen:

MyFactory myFactory = new MyFactory();
MyObjectSuperClass obj1 = myFactory.getFactoryInstance("MyObjectSubClass");

Sie übergeben den Namen Ihrer Klasse in der Methode der Factory-Klasse, anstatt sie mit dem Befehl "new" zu erstellen.

 

UML-Diagramm

Die Struktur der Anwendung, die für dieses "Factory"-Muster-Tutorial erstellt wird. Ein LKW hat die Funktion "Start", die von den LKW-Herstellern unterschiedlich implementiert wird.
Die Werksklasse "TruckFactory" wird verwendet, um neue Lkw-Instanzen für einen bestimmten LKW-Hersteller zu erhalten.

 

Beispiel

Dies ist eine Beispielanwendung, die verschiedene Lkw-Hersteller erstellt und betreibt.

 

public interface Truck {
	void start();
}
public class Volvo implements Truck {
	@Override
	public void start() {
		System.out.println("Volvo truck was started.");
	}

}
public class Man implements Truck {
	@Override
	public void start() {
		System.out.println("Man truck was started.");
	}
}
public class TruckFactory {

	public Truck getTruck(String truckManufacturer) {
		if(truckManufacturer != null) {
			if(truckManufacturer.equalsIgnoreCase("Volvo")) {
				return new Volvo();
			} else if (truckManufacturer.equalsIgnoreCase("Man")) {
				return new Man();
			}
		} 
		return null;
	}
	
}
public class TruckFactoryPattern {

	public static void main(String[] args) {
		TruckFactory truckFactory = new TruckFactory();

		Truck manObj = truckFactory.getTruck("Man");
		Truck volvoObj = truckFactory.getTruck("Volvo");

		manObj.start();
		volvoObj.start();
	}

}

Ausgabe:

Man truck was started.
Volvo truck was started.

 

Andere Arten des Pattern "Fabrik"

Fabrik-Methode (Factory method)
Diese Methode wird verwendet, um eine Instanz der Klasse zu erzeugen, von der aus diese Methode selbst aufgerufen wird. Eine Factory-Methode ist immer eine abstrakte Methode.

Abstrakte Fabrik (Abstract factory)
Dies ist eine Erweiterung der Implementierung des Fabrikmusters und dient dazu, mehrere Objekttypen zu erstellen, die noch eine Beziehung zueinander haben.
Es gibt eine abstrakte Factory-Klasse, die durch konkrete Factory-Klassen (Unterklasse) erweitert wird. Die konkreten Factory-Klassen implementieren die Methode(n), die in der Superklasse (der abstrakten Factory-Klasse) definiert sind.
Diese konkreten Fabrikklassen bilden Instanzen konkreter Klassen. Die konkreten Klassen enthalten die implementierten Methoden ihrer jeweiligen abstrakten Oberklassen.

 

Dieses Tutorial als Anwendung

Github-Repository: https://github.com/a-dridi/factory-TruckFactoryDemo

 

Cookies erleichtern die Bereitstellung unserer Dienste. Mit der Nutzung unserer Dienste erklären Sie sich damit einverstanden, dass wir Cookies verwenden.
Ok