1. 장면 설명
"Java Design Pattern (I) 공장 패턴"과 연결
공장 모델의 한 가지 단점은 클래스의 폐쇄성 원리를 파괴한다는 것입니다. 예를 들어, Word 파일에 대한 데이터 수집을 추가 해야하는 경우 다음 단계를 따르십시오.
2 단계 공장 클래스를 수정했습니다. 각 추가 구현 클래스에 대해 공장 클래스를 수정 해야하는 경우 이는 불합리합니다.
해결책은 추상 공장 클래스를 사용하고 각 구현 클래스에 대한 공장 클래스를 만들고 공장 인터페이스를 추가하여 각 공장 클래스가 인터페이스를 구현하는 것입니다.
추상 공장을 사용한 후 위의 단계는 다음으로 변경됩니다.
수정 후, 공장 클래스가 추상화되고 공장 인터페이스가 정의되므로 새 구현 클래스를 추가 할 때 원래 코드를 더 이상 수정할 필요가 없으며 원래 구현은 파괴되지 않습니다.
아래 그림과 같이 :
2. 샘플 코드
기기 데이터 수집 인터페이스 :
package lims.designpatterndemo.abstractfactorydemo; public Interface EquipmentDataCapture {public String Capture (String Filepath);}PDF 파일 수집 클래스 :
패키지 lims.designpatterndemo.abstractfactorydemo; public class pdffilecapture 구현 장비 dataCapture {@override public string capture (String Filepath) {return "pdf 파일 콘텐츠"; }}Excel 파일 수집 클래스 :
패키지 lims.designpatterndemo.abstractfactorydemo; public class excfelecapture 구현 장비 dataCapture {@override public string capture (string filepath) {return "excel file content"; }}초록 공장, 즉 공장 인터페이스 :
패키지 lims.designpatterndemo.abstractfactorydemo; public interface dataCaptureFactory {public EquipmentDatAcapture getCapture (); }PDF 파일 수집 공장 :
패키지 lims.designpatterndemo.abstractfactorydemo; public class pdffilecapturefactory 구현 장비 dataCaptureFactory {@override public EquipmentDataCapture getCapture () {return new pdffilecapture (); }}Excel 파일 수집 공장 :
패키지 lims.designpatterndemo.abstractfactorydemo; public class excelfilecapturefactory emperiordaCaptureFactory {@override public EquipmentDataCapture getCapture () {return new edcfelfilecapture (); }}Call example:
패키지 lims.designpatterndemo.abstractfactorydemo; public class actractfactorydemo {public static void main (String [] args) {EquipmentDatacaptureFactory Fabric = 새로운 pdffilecapturefactory (); 직물 = 새로운 excfelecaptureFactory (); EquipmentDatAcapture Capture = fabric.getCapture (); 문자열 filecontent = capture.capture ( ""); System.out.println (filecontent); }}위는이 기사의 모든 내용입니다. 모든 사람의 학습에 도움이되기를 바랍니다. 모든 사람이 wulin.com을 더 지원하기를 바랍니다.