1. 장면 설명
빌더 패턴은 공장 패턴 및 추상 공장 패턴과 동일하며 상속 클래스 객체를 만드는 데 사용됩니다.
공장 모드 : Java 디자인 모드 공장 모드
초록 공장 패턴 : Java 디자인 패턴 추상 공장 패턴
차이점은 공장 모드에서 각 서브 클래스는 인터페이스를 구현하고 공장 클래스를 통해 서브 클래스 객체를 생성한다는 것입니다. 빌더 모드에있는 동안 각 서브 클래스에는 빌더 클래스가 있으며이를 통해 다른 부모 클래스 객체를 생성하고 궁극적으로 다형성을 구현합니다. 실제로, 하위 클래스 및 상위 클래스는 코드에 존재하지 않습니다.
공장 모드에서 계측기 데이터 수집 도구를 예제로 사용하여 인터페이스 "기기 데이터 수집 도구"를 정의하고 서브 클래스 "PDF 파일 데이터 수집 도구"및 "Excel 파일 데이터 수집 도구"를 정의하고 서브 클래스에서 인터페이스를 구현합니다. 서브 클래스 객체는 공장 클래스 (정적 공장 클래스 또는 추상 공장 클래스이든)를 통해 생성되며,이 개체는 다른 표현, 즉 다형성을 가지고 있습니다.
Builder 모드에서는 부모 클래스 "계측기 데이터 수집 도구"를 정의한 다음 "Builder Class of PDF 파일 데이터 수집 도구"및 "Builder Class of Excel 파일 데이터 수집 도구"를 사용하여 다른 표현 방법을 할당하고 (필드에 다른 값을 할당 함) 최종적으로 다형성을 달성하십시오.
빌더 모드에서 감독은 감독과 같습니다. 클래스 객체의 생성을 완료하기 위해 Builder Builder를 호출합니다. 발신자는 아래 그림과 같이 감독을 호출 할 수 있습니다.
물론, 공장 모델은 문자 그대로 객체를 만드는 데 사용되는 반면, 빌더 모델은 문자 그대로 다른 객체를 구축하는 데 사용됩니다. 두 사람은 비슷한 기능을 달성 할 수 있지만 두 가지의 응용 시나리오는 매우 다를 수 있습니다.
공장 모델은 간단한 클래스 객체를 만드는 데 사용되며 빌더 모델은 복잡한 클래스 객체를 구축하는 데 사용됩니다. 특정 정보는 바이두에서 배울 수 있습니다.
예를 들어, Word 파일 데이터 수집을 확장 할 때 Word 파일 데이터 수집 프로그램 작성을 구현하는 Word File Data Collection을 추가하고 Builder 클래스를 작성합니다. 전화 할 때 WordBuilder 클래스를 사용하여 호출 할 수 있습니다.
2. 샘플 코드
(부모) 수업 :
패키지 lims.designpatterndemo.builderdemo; public class 장비 dataCapture {private String filepath; 개인 문자열 장비 사다; // public String getFilePath () {reture this.FilePath; } public void setFilePath (String FilePath) {this.FilePath = FilePath; } public String getEquipmentData () {return this.equipmentData; } public void setequipmentData (String EquipmentData) {this.equipmentData = EquiptionData; }}빌더 인터페이스 :
패키지 lims.designpatterndemo.builderdemo; public Interface 장비 dataCaptureBuilder {// 구성 요소 void buildFilePath (); void buildEquipmentData (); // 장비 조립 dataCapture buildEquipmentDatAcapture ();}PDF 데이터 수집 빌더 카테고리 :
패키지 lims.designpatterndemo.builderdemo; public class pdffilecaptureBuilder는 장비 dataCaptureBuilder {// 장비 dataCapture 캡처; // public public pdffilecaptureBuilder () {capture = new EquipmentDatAcapture (); } // @override public void buildFilePath () {capture.setFilePath ( ". pdf"); } @override public void buildEquipmentData () {capture.setequipmentData ( "PDF 파일 콘텐츠"); } @override public EquipmentDatAcapture BuildEquipmentDatAcapture () {return Capture; }}Excel 데이터 수집 빌더 :
패키지 lims.designpatterndemo.builderdemo; public class excfelecapturebuilder는 장비 datacapturebuilder {// 장비 dataCapture 캡처; // public excfelecaptureBuilder () {capture = new EquipmentDatAcapture (); } @override public void buildFilePath () {capture.setFilePath ( ". XLSX"); } @override public void buildEquipmentData () {capture.SeteQuipmentData ( "Excel File Content"); } @override public EquipmentDatAcapture BuildEquipmentDatAcapture () {return Capture; }}감독 수업은 단순히 감독 수업으로 이해할 수 있습니다.
패키지 lims.designpatterndemo.builderdemo; public class 장비 datacapturedipector {public equiptiondataCapture constructeqiupmentDataCapture (EquipmentDataCaptureBuilder builder) {builder.buildfilepath (); builder.buildequipmentData (); EquipmentDatAcapture Capture = Builder.buildequipmentDataCapture (); 리턴 캡처; }}호출 측면 예 :
패키지 lims.designpatterndemo.builderdemo; public class builderdemo {public static void main (String [] args) {EquipmentDatacapturedirector direcotr = 새로운 장비 datacapturedirector (); EquipmentDataCaptureBuilder Builder = New PdffilecaptureBuilder (); builder = 새로운 accfelcecaptureBuilder (); EquipmentDataCapture Capture = DiRecotr.constructeQiupmentDataCapture (Builder); System.out.println (capture.getequipmentData ()); }}위는이 기사의 모든 내용입니다. 모든 사람의 학습에 도움이되기를 바랍니다. 모든 사람이 wulin.com을 더 지원하기를 바랍니다.