Maison  >  Article  >  Java  >  Analyse du code graphique du modèle d'usine en Java

Analyse du code graphique du modèle d'usine en Java

黄舟
黄舟original
2017-08-07 10:47:511347parcourir

Cet article présente principalement les informations relatives au mode usine compilées par la Power Node Java Academy. Les amis dans le besoin peuvent s'y référer

Mode usine simple

 

Lorsqu'une classe d'ajout est nécessaire, appelez CreateOperate() de la classe d'usine et spécifiez le produit à fabriquer

Par exemple, l'exemple d'usine d'opération donné dans Dahua Design Pattern P11 :


public static Operation createOperate(string operate)
{
Operation oper = null;
12
switch (operate)
{
case "+":
{
oper = new OperationAdd();
break;
}
case "-":
{
oper = new OperationSub();
break;
}
case "*":
{
oper = new OperationMul();
break;
}
case "/":
{
oper = new Operationp();
break;
}
}
return oper;
}
}

Pour appeler l'usine, vous avez besoin de createOperator("/") pour renvoyer l'opérateur de division.

Avantages : Le client n'a pas besoin de modifier le code.

Inconvénients : lorsqu'une nouvelle classe d'opération doit être ajoutée, non seulement une nouvelle classe d'opération d'ajout est requise, mais également la classe d'usine doit être modifiée, ce qui viole le principe d'ouverture et de fermeture.

  Modèle de méthode d'usine

Le diagramme de classes UML est le suivant :

Le modèle n'a qu'une seule usine et le modèle de méthode d'usine a un correspondant usine pour chaque produit

Avantages : Pour ajouter une classe de fonctionnement (comme la Nième classe de puissance), il suffit d'ajouter la classe de fonctionnement et l'usine correspondante, deux classes, il n'est pas nécessaire de modifier l'usine classe.

Inconvénients : L'ajout de classes d'opération modifiera le code client. La méthode d'usine ne déplace que le jugement logique interne d'une usine simple vers le client.

Modèle de fabrique abstrait :

Le diagramme de classes UML est le suivant :

Le modèle de méthode de fabrique est très similaire, mais il existe plusieurs différences :

Modèle d'usine abstrait, une usine spécifique peut fabriquer plusieurs produits, par exemple, l'usine Microsoft (équivalente à SqlserverFactory) peut fabriquer des souris Microsoft (appartenant à la classe souris, Sous la catégorie souris, il y a des souris HP, Microsoft souris, etc., qui sont équivalents au SqlserverDepartment et AccessDepartment sous IDepartment dans la figure ci-dessus). Vous pouvez également créer des claviers Microsoft (appartenant à la catégorie des claviers. Sous la catégorie des claviers, il y a des claviers HP, des claviers Microsoft, etc., qui sont équivalents à la figure ci-dessus). SqlserverUser et AccessUser ci-dessous IUser dans .

Avantages : Échange facile de séries de produits, comme la commutation entre les bases de données Access et SQLServer.

Inconvénients : Par exemple, pour ajouter un produit de châssis, vous devez non seulement ajouter trois catégories "classe de châssis, châssis Microsoft, châssis HP", mais également modifier l'usine HP. L'usine Microsoft prend en charge la fabrication des châssis. Lors de l'ajout d'une usine Lenovo, il vous suffit d'ajouter trois classes. Pour utiliser l'usine Lenovo, vous devez toujours modifier le code client.

Dans "Dahua Design Patterns", il est proposé d'utiliser le modèle d'usine simple pour améliorer le modèle d'usine abstrait.
工厂方法模式:一个抽象产品类,可以派生出多个具体产品类。 
  一个抽象工厂类,可以派生出多个具体工厂类。 
  每个具体工厂类只能创建一个具体产品类的实例。 
  抽象工厂模式:多个抽象产品类,每个抽象产品类可以派生出多个具体产品类。 
  一个抽象工厂类,可以派生出多个具体工厂类。 
  每个具体工厂类可以创建多个具体产品类的实例。 

  区别:工厂方法模式只有一个抽象产品类,而抽象工厂模式有多个。
  工厂方法模式的具体工厂类只能创建一个具体产品类的实例,而抽象工厂模式可以创建多个。

 

Le code de DataAccess est le suivant :

 

 De cette façon, la base de données (marque spécifiée) est directement spécifié dans DataAccess, si nécessaire. Lors du changement de base de données (ou de marque), modifiez le code dans DataAccess.

Bien sûr, vous pouvez utiliser la réflexion pour modifier la base de données. De cette façon, il vous suffit de modifier le fichier de configuration. Cela améliore parfaitement les défauts de la fabrique abstraite, et il n'est pas nécessaire de modifier le code côté client.

Implémentation de la réflexion :

Pour modifier les attributs de la base de données :

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn