요약
디자인 패턴은 예술입니다. 이 예술을 정말로 이해한다면 세상이 더 아름답게 될 것임을 알게 될 것입니다.
정의
객체 생성을위한 인터페이스를 정의하고, 하위 클래스가 인스턴스를 할 클래스를 결정하게하십시오.
시나리오를 사용하십시오
복잡한 개체를 사용하는 곳마다 공장 모드를 사용할 수 있습니다.
음
1. 초록 공장
초록 공장 : 우리는 모두 공장이 일반적으로 하나의 기능, 즉 생산, 예를 들어 Geely Automobile Factory, 즉 Geely Automobile, iPhone 휴대 전화 제조업체 등을 가지고 있음을 알고 있습니다. 따라서 간단한 방식으로, 즉 Create ();
2. 특정 자동차 제조 공장
특정 자동차 제조 공장 : 자동차 제조를위한 실제 공정 및 방법을 갖춘 추상 공장을 실현합니다.
3. 초록 차
초록 자동차 : 우리는 일반적으로 자동차가 실행, 음악을 재생하고 탐색하며 회전 할 수 있다는 것을 알고 있습니다. 자동차의 일반적인 특징입니다.
4. 특정 자동차
초록 자동차 : 콘크리트 자동차는 추상차를 실현하고 모든 기능을 가지고 있습니다. 물론 자동차마다 기능이 다를 수 있습니다.
위의 간단한 소개는 기본적으로 특정 자동차 공장이 아우디 공장, 폭스 바겐 공장, 폭스 바겐 자동차 등과 같은 해당 자동차를 제조한다는 것입니다.
코드 데모
우리는 위에서 그들 사이의 관계를 명확하게 이해 했으므로 코드를 사용하여 코드에서 위의 아이디어와 논리를 보여줄 것입니다.
(1) 초록 자동차 공장
패키지 com.zengtao.demo.factory;/*** 초록 공장*/public acpract class carfactory {public actract <t extends car> t createcar (class <t> cla);}(2) 특정 자동차 공장
package com.zengtao.demo.factory;/*** Audi Factory*/public class audifactory는 Carfactory {@suppresswarnings ( "Checked") @override public <t createcar (clest <t> cla) {car car = null; {car = (car) class.forname (cla.getName ()). newInstance (); } catch (예외 e) {e.printstacktrace (); } 반환 (t) 자동차; }}(3) 추상차 정의
패키지 com.zengtao.demo.factory; public Abstract Class Car {public Abstract void drive (); 공개 초록 void selfnagive (); 공개 초록 void playmusic ();}(4) 특정 차
(아우디 Q3)
package com.zengtao.demo.factory; public class audiq3car 확장 audicar {@override public void drive () {System.out.println ( "audiq3car가 성공적으로 제조되었습니다"); System.out.println ( "audiq3car drive"); } @override public void selfnagive () {system.out.println ( "audiq3car selfnagive"); } @override public void playmusic () {system.out.println ( "audiq3car selfnagive"); } @override public void playmusic () {system.out.println ( "audiq3car playmusic"); System.out.println ( ""); }}(Audi Q5)
package com.zengtao.demo.factory; public class audiq5car 확장 audicar {@override public void drive () {system.out.println ( "audiq5car가 성공적으로 제조되었습니다"); System.out.println ( "audiq5car drive"); } @override public void selfnagive () {system.out.println ( "audiq5car selfnagive"); } @override public void playmusic () {system.out.println ( "audiq5car selfnagive"); } @override public void playmusic () {system.out.println ( "audiq5car playmusic"); System.out.println ( ""); }}(5) 전화
package com.zengtao.demo; import com.zengtao.demo.demo.demo.audifactory; import com.zengtao.demo.factory.audiq3car.audiq3car; import com.zengtao.demo.factory.audiq5car; public main {string [] str) {// 공개 오디오 오 시청서 (Audifactory) (공개 오디오); // 공장을 사용하여 Q3 CAR AUDIQ3CAR AUDIQ3CAR = AUDIOFACTORY.CREATECAR (audiq3car.class)를 만드십시오. // 공장을 사용하여 Q5 CAR AUDIQ5CAR AUDIQ5CAR = AUDIFACTORY.CREATECAR (audiq5car.class)를 만드십시오. // 운전을 시작하고 음악을 재생하기 시작합니다. audiq3car.drive (); audiq3car.playmusic (); audiq5car.drive (); audiq5car.playmusic (); }}(6) 결과
위의 것에 관해서는, 공장 방법은 자동차 제조의 간단한 과정을 실현하는 데 사용됩니다.
첫 번째 요점 :
추상 공장에서 우리는 Createcar (클래스 CLA) 방법이 왜 이렇게 정의합니까? 반사를 사용하여 특정 차량을 만듭니다. 이런 식으로, 우리의 다른 유형의 자동차에는 해당 조건 만 필요합니다. 생산할 수 있습니까? 따라서 Audi는 Q3, Q5, A4, A6, A7, A8 및 기타 시리즈를 가지고 있습니다.
두 번째 요점 :
BMW X1, 320, X5 등이있는 BMW와 같은 다른 자동차가있는 경우, 우리는 또한 매우 간단하게 구현하고 추상 공장을 구현 한 다음 특정 자동차에서 추상차를 구현할 수 있으며 확장도 매우 편리합니다.
요약
여기에서 추상 공장에서 나올 시간입니다. 공장 방법 모델은 비교적 간단하고 좋은 디자인 모델입니다.
그러나 다음과 같은 단점도 있습니다. 신규 및 기타 유형의 자동차가 있다면 추상 공장과 추상 자동차 만 구현 한 다음 두 개의 새로운 클래스를 만들면됩니다.
그러나 자동차가 아니라 휴대폰이라면 공장 방법 모델을 채택하거나 요구에 따라 결정하는지 여부에 관계없이 많은 수업이 나타나게됩니다.
참고 : 디자인을 위해 디자인 패턴을 적용하지 마십시오. 물론, 공장 방법 패턴도 일반적으로 사용됩니다.
위는이 기사의 모든 내용입니다. 모든 사람의 학습에 도움이되기를 바랍니다. 모든 사람이 wulin.com을 더 지원하기를 바랍니다.