Factory Method Pattern
In Fällen, in denen keine neuen Instanzen erstellt werden können, z. B. in Fällen, in denen Pakete unterschiedlich sind, verwenden Sie das Factory-Methodenmuster, um Instanzen zu erfassen
Die abstrakte Factory-Klasse definiert das zu instanziierende Skelett
Eine Unterklasse der Factory-Abstract-Klasse erstellt eine tatsächliche Instanz
Der Benutzer erhält eine Instanz über die Factory-Abstract-Klasse
Design Pattarm MENU
Diese Seite hat die folgende Struktur
Wenn Sie nur den Code überprüfen möchten, fliegen Sie als Zweiter
Überprüfen Sie mit der folgenden Klassenstruktur
Paketnamen | Klasse | Zugriffsmodifikator | Erläuterung |
---|---|---|---|
Default | user(Main.class) | public | Überprüfen Sie den Betrieb |
implement | sam.class | Default | nichts Besonderes |
java:package.implement.sam
package implement;
class sam{}
user(Main.class)
import implement.*;
public static void main(String[] args){
sam s = new sam();
}
Ergebnis
python
sam cannot be resolved to a type
Weil der Zugriffsmodifikator von sam.class Standard ist Nur über Klassen zugänglich, die zum Paket gehören
Daher ist sam.class völlig unabhängig vom Benutzer und kann nicht berührt werden. Verwenden Sie in solchen Fällen beispielsweise das Factory Method Pattern
Überprüfen Sie mit der folgenden Konfiguration
Paketnamen | Zugriffsmodifikator | Klasse | import | Erläuterung |
---|---|---|---|---|
framework | public | abstract samFramework.class | Keiner | Abstrakte Klasse von Objekten, die vom Benutzer verwendet werden |
framework | public | abstract factoryFramwork.class | Keiner | Abstrakte Klasse, die die Instanziierung definiert |
implement | Default | sam.class | import framework.samFramework | Benutzer ist Sam()Verwenden Sie eine Instanz von |
implement | public | factory.class | import framework.samFramework import framework.factoryFramework |
sam.Erstellen Sie eine Instanz der Klasse |
Default | public | user(Main.class) | import framework.samFramework import framework.factoryFramework import implement.factory |
Lass uns eine Klasse machen
samFramework.class
package framework;
public abstract class samFramework{
public abstract void show();
}
factoryFramework.class
package framework;
public abstract class factoryFramework{
public abstract samFramework newInstance();
}
sam.class
package implement;
import framework.samFramework;
class sam extends samFramework {
public void show(){System.out.println("sam");}
}
factory.class
package implement;
import framework.factoryFramework;
import framework.samFramework;
public class factory extends factoryFramework {
public samFramework newInstance(){return new sam();}
}
user(Main.class)
import framework.factoryFramework;
import framework.samFramework;
import implement.factory;
class Main {
public static void main(String[] args){
factoryFramework factory = new factory();
samFramework sam = factory.newInstance();
sam.show();
}}
Recommended Posts