1. Description de la scène
Lié à "modèle de conception Java (i) motif d'usine"
L'un des inconvénients du modèle d'usine est qu'il détruit le principe de la fermeture de la classe. Par exemple, si vous devez ajouter la collecte de données pour les fichiers Word, suivez les étapes suivantes:
Étape 2 a modifié la classe d'usine. Si la classe d'usine doit être modifiée pour chaque classe d'implémentation supplémentaire, cela est déraisonnable.
La solution consiste à utiliser des classes d'usine abstraites, à créer sa classe d'usine pour chaque classe d'implémentation et à ajouter des interfaces d'usine afin que chaque classe d'usine implémente l'interface.
Après avoir utilisé l'usine abstraite, les étapes ci-dessus sont modifiées en:
Après modification, puisque la classe d'usine est abstraite et que l'interface d'usine est définie, le code d'origine n'est plus nécessaire pour être modifié lors de l'ajout de la nouvelle classe d'implémentation, et l'implémentation d'origine n'est pas détruite.
Comme indiqué dans la figure ci-dessous:
2. Exemple de code
Interface d'acquisition de données de l'instrument:
package lims.designPatterndemo.abstractFactoryDemo; Interface publique EquipmentDatacapture {Capture de chaîne publique (chaîne filepath);}Classe de collecte de fichiers PDF:
package lims.designPatterndemo.abstractFactoryDemo; public class pdffileCapture implémente EquipmentDatacapture {@Override public String capture (string filepath) {return "pdf file Content"; }}Classe de collecte de fichiers Excel:
package lims.designPatterndemo.abstractFactoryDemo; public class exvelfileCapture implémente EquipmentDatacapture {@Override public String capture (string filepath) {return "Excel File Content"; }}Résumé usine, c'est-à-dire l'interface d'usine:
package lims.designPatterndemo.abstractFactoryDemo; Interface publique EquipmentDatacaptureFactory {public EquipmentDatacapture getCapture (); }Factory de collecte de fichiers PDF:
package lims.designPatterndemo.abstractFactoryDemo; classe publique PdffileCaptureFactory implémente EquipmentDatacaptureFactory {@Override public EquipmentDatacapture getCapture () {return new pdffileCapture (); }}EXCEL FILE COLLECTION FACTORY:
package lims.designPatterndemo.abstractFactoryDemo; classe publique ExcElfileCaptureFactory implémente EquipmentDatacaptureFactory {@Override public EquipmentDatacapture getCapture () {return new ExcelElCapture (); }}Exemple d'appel:
package lims.designPatterndemo.AbstractFactoryDemo; classe publique AbstractFactoryDemo {public static void main (String [] args) {EquipmentDatacaptureFactory tissu = new PdffileCaptureFactory (); tissu = nouveau ExceLfelEcaptureFactory (); EquipmentDatacapture Capture = tissu.getCapture (); String fileContent = capture.capture (""); System.out.println (FileContent); }}Ce qui précède est tout le contenu de cet article. J'espère que cela sera utile à l'apprentissage de tous et j'espère que tout le monde soutiendra davantage Wulin.com.