1. Описание сцены
Связано с заводским рисунком "Java Design (i)
Одним из недостатков заводской модели является то, что она разрушает принцип закрытия класса. Например, если вам нужно добавить сбор данных для файлов Word, выполните следующие шаги:
Шаг 2 изменил класс завода. Если заводский класс должен быть изменен для каждого дополнительного класса реализации, то это неразумно.
Решение состоит в том, чтобы использовать абстрактные фабричные классы, создать свой заводской класс для каждого класса реализации и добавить заводские интерфейсы, чтобы каждый класс заводских классов реализовал интерфейс.
После использования абстрактной фабрики приведенные выше шаги изменяются на:
После модификации, поскольку заводский класс абстрагирована и определяется заводский интерфейс, исходный код больше не нужен для изменения при добавлении нового класса реализации, а исходная реализация не уничтожена.
Как показано на рисунке ниже:
2. Пример кода
Интерфейс сбора данных приборов:
Пакет Lims.designpatterndemo.abstractfactorydemo; Public Interface EquipmentDataCapture {public String Capture (String filePath);}PDF Класс сбора файлов:
пакет lims.designpatterndemo.abstractfactorydemo; public class pdffileCapture реализует eaversdataCapture {@Override public String Capture (String filePath) {return "PDF -файл содержимое"; }}Класс сбора файлов Excel:
пакет lims.designpatterndemo.abstractfactorydemo; открытый класс ExcelfileCapture реализует eaversdataCapture {@Override public String Capture (String filePath) {return "Excel файловый содержимое"; }}Абстрактная фабрика, то есть заводской интерфейс:
Package Lims.designpatterndemo.abstractfactoryDemo; Общедоступный интерфейс eabletryDataCaptureFactory {public EquipmentDataCapture getCapture (); }PDF Файл Файл Фабрики:
пакет lims.designpatterndemo.abstractfactorydemo; public class pdffileCapture Factory реализует оборудование. }}
Excel File Collection Factory:
пакет lims.designpatterndemo.abstractfactorydemo; открытый класс ExcelfileCapture Factory реализует eaversdataCaptureFactory {@Override public EquipmentDatacapture getCapture () {return new ExcelfileCapture (); }}Пример звонка:
пакет lims.designpatterndemo.abstractfactorydemo; public class AbstractFactoryDemo {public static void main (string [] args) {eabenderDataCapture Fabric = new pdffileCaptuteFactory (); ткань = new ExcelfileCaptureFactory (); Оборудование, представляющее собой захват = ткань.getCapture (); String fileContent = capture.capture ("" "); System.out.println (FileContent); }}Выше всего содержание этой статьи. Я надеюсь, что это будет полезно для каждого обучения, и я надеюсь, что все будут поддерживать Wulin.com больше.