Factory Method Pattern
Dans les cas où de nouvelles instances ne peuvent pas être créées, comme les cas où les packages sont différents, utilisez le modèle de méthode d'usine pour acquérir des instances
La classe abstraite d'usine définit le squelette à instancier
Une sous-classe de la classe abstraite de fabrique crée une instance réelle
l'utilisateur reçoit une instance via la classe abstraite d'usine
Design Pattarm MENU
Cette page a la structure suivante
Si vous voulez juste vérifier le code, volez en second
-Cas où une nouvelle instance ne peut pas être créée
・ Confirmation du modèle de méthode d'usine
Vérifiez avec la structure de classe suivante
nom du paquet | classe | Modificateur d'accès | Explication |
---|---|---|---|
Default | user(Main.class) | public | Vérifiez le fonctionnement |
implement | sam.class | Default | rien de spécial |
java:package.implement.sam
package implement;
class sam{}
user(Main.class)
import implement.*;
public static void main(String[] args){
sam s = new sam();
}
résultat
python
sam cannot be resolved to a type
Parce que le modificateur d'accès de sam.class est Default Accessible uniquement à partir des classes appartenant au package
Par conséquent, sam.class est complètement indépendant de l'utilisateur et ne peut pas être touché. Par exemple, utilisez le modèle de méthode d'usine dans de tels cas
Vérifiez avec la configuration suivante
nom du paquet | Modificateur d'accès | classe | import | Explication |
---|---|---|---|---|
framework | public | abstract samFramework.class | Aucun | Classe abstraite d'objets utilisés par l'utilisateur |
framework | public | abstract factoryFramwork.class | Aucun | Classe abstraite qui définit l'instanciation |
implement | Default | sam.class | import framework.samFramework | l'utilisateur est sam()Utilisez une instance de |
implement | public | factory.class | import framework.samFramework import framework.factoryFramework |
sam.Créer une instance de classe |
Default | public | user(Main.class) | import framework.samFramework import framework.factoryFramework import implement.factory |
Faisons une classe
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