디자인 패턴의 공장 패턴 - 팩토리 메소드 패턴
피자 프로젝트 - 안녕하십니까, 더러운 더러운 폭탄에 오신 것을 환영합니다, 오늘 작은 부문 사업부는 새로운 라이브를 받았다.
출처 : 카이거 자바 (kaigejava)
요구 사항 :
피자 프로젝트 :
실행할 수 있도록 시간을 연장하기 쉽고, 유지 보수가 용이하도록 확장 피자 종류를 용이하게하기 위해
피자 가족의 설계를 살펴 보자 :
얻기 위해 작은 부문 분할을 분석 한 후 : 피자 소성 (굽기), 절단 (절단), 포장 (박스) 피자 원료 준비 (준비가)가 필요합니다. 어디의 변화는 원료를 준비 할 준비가되어 있습니다. 다른 피자 서로 다른 원료 있지만, 절단 및 포장, 구운 될 필요가있다. 그래서, 우리는 원료, 콘크리트없는 현실의 추상적 인 방법을 여기에 있습니다. 클래스 다이어그램 준 후 다음
첫 번째 디자인 : 간단한 공장 패턴의 사용 (작은 부문 국수 항목에 부 참조)를 찾을 수 없습니다. 이유는 무엇입니까?
피자 점점 더 많은 화재로, 많은 장소는 JM에 있습니다. JM 워드 경우, 동일한 코드와 같은 간단한 공장 패턴을 만들어야합니다 모든 장소, 유지 보수가 매우 귀찮은 일 때, 복사를 많이 만들 필요가있다.
두 번째 디자인 선택 : 팩토리 메소드 패턴.
의 프로젝트의 구조를 살펴 보자 :
설명 :
1 : 도메인 : POJO 특정 객체입니다. 그들은 클래스 PizzaAbstract에서 상속됩니다
, 베이징으로 시작되는 베이징 체인입니다. 황을 시작으로 상하이 체인입니다.
2와 3 피자와 피자 주문 추상 클래스이다
4 : 주문 체인 클래스 특정 지점. 그들은 클래스 PiazzOrderAbstract에서 상속됩니다
5 : 테스트 클래스
의 두 개의 추상 클래스를 살펴 보자.
PizzaAbstract 카테고리 :
PizzaOrderAbstract 카테고리 :
베이징 greekpizza의 관점에서 :
재래 看看 BeiJinOrderPizza :
시험 종류 :
결과보기 :
위의 코드를 보여줍니다 통해, 우리는 다음을 얻을 :
공장 방법 패턴 디자인 :
추상적 인 방법으로 기능을 추상화의 피자 객체 인스턴스의 프로젝트 피자는 서로 다른 JM 가게에서 특정 기능을 달성했다.
공장 방법 패턴 :
추상 메소드는 객체를 생성하는 정의는 서브 클래스에 의해 인스턴스화 할 수있는 클래스를 결정합니다. 이 문장에서, 우리는 서브 클래스의 연기에 팩토리 메소드 패턴이 인스턴스화되고있는 (생성) 개체를 알 수 있습니다.
팩토리 메소드 비교 모드와 간단한 공장 패턴 :
간단한 공장 패턴 :
클래스 ID는 팩토리 객체는 특정 클래스의 객체 인스턴스에 의해 얻을 수있다. 다음과 같이 팩토리 객체 내부 클래스의 객체 인스턴스는 다음과 같습니다
객체 인스턴스화, 객체는 공장 안에 있습니다.
공장 방법 패턴 :
그것은 밖으로 추출, 객체를 생성하는 것입니다. 이 방법은 특정 클래스에 그려진 피자를 만드는 것입니다.
우리는 피자 주문 객체를 살펴 :
콘크리트 호출 :
PizzaOrderAbstract bjOder = 새로운 BeiJinOrderPizza은 (); 구상 서브 클래스를 호출합니다.
그리고 인스턴스의 개체는 하위 클래스에서 수행됩니다.
연락 카이거 - "카이거 자바 (kaigejava)
카이거 개인 블로그 : www.kaigejava.com. 개인 블로그 카이거 개인 편지 될 수 있습니다 오 ~
즉, 새로운 용량 C는 공장과 서브 클래스에서 새 제품으로 한 기존 코드를 수정할 필요가 나타납니다이 경우 있도록 공장 방법 패턴은 특정 방법을 통해 특정 개체를 만드는 공장에서 다음, 추상 팩토리 클래스를 통해 공장을 만들 수 있습니다 서브 클래스는 친구가 될 수 있습니다.