[JAVA] Modèle de méthode d'usine

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

Cas où new ne peut pas créer une instance

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

Confirmation du modèle de méthode d'usine

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
samFramework.class et factoryFramework.class Je n'ai rien importé De plus, l'utilisateur (Main.class) ne peut pas importer sam (). Impossible d'obtenir l'instance sam avec le nouveau sam ()

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

Modèle de méthode d'usine
Modèle de méthode d'usine
Modèle de conception ~ Méthode d'usine ~
modèle d'usine abstrait
Modèle d'usine abstraite
Modèle de méthode de modèle
Modèle de modèle de méthode
Modèle de conception Java pour débutant (modèle de méthode d'usine)
Modèle de conception ~ Usine abstraite ~
Méthode d'usine statique partie 1
Modèle de conception ~ Méthode de modèle ~
Introduction aux modèles de conception (méthode d'usine)
Modèle de conception mâché C #: TemplateMethod
Motif de souvenir
Quelle fabrique de modèles de stratégie, pas un état
Motif médiateur
Modèle d'itérateur
Motif composite
Méthode Java
Modèle d'observateur
java (méthode)
Modèle de constructeur
Modèle de pont
Modèle de commande
méthode de fusion
Modèle de stratégie
Modèle d'itérateur
Modèle de visiteur
Modèle d'adaptateur
Méthode de la carte
inclure la méthode
Modèle de proxy
Modèle de stratégie
Motif composite
Méthode abstraite
méthode d'initialisation
Motif singleton
Méthode de liste
Motif singleton
Modèle de prototype
met méthode
[Modèle de conception] Logique commune avec la méthode de modèle
Méthode Java
Méthode de classe
Modèle de façade
méthode save!
Méthode getParameter
[Java] méthode
Motif décorateur
Modèle de poids mouche
Motif décorateur
Modèle de médiateur
méthode privée
Motif de façade
Modèle de visiteur
méthode des rails
Modèle de pont
[Java] méthode
Nom de la méthode de la méthode de fabrique statique apprise à partir de Java 8