Latest web development tutorials

모델 빌더

복잡한 객체로 단계적으로 구축하기 위해 간단한 개체의 복수를 사용하여 빌더 모드 (빌더 패턴). 디자인 패턴이 유형의 개체를 만들 수있는 가장 좋은 방법을 제공하는 스키마를 작성 속한다.

빌더 클래스는 최종 객체를 생성하는 단계에 의해 단계입니다. 빌더 클래스는 다른 개체의 독립적입니다.

소개

의도 : 동일한 구성 프로세스는 다른 표현을 생성 할 수 있도록 복합물은 그 표현 분리 구축.

주로 해결 : 소프트웨어 시스템의 주요 솔루션 때때로 특정 알고리즘 서브 오브젝트의 다양한 부분으로 구성 통상 작업을 만드는 "복잡한 객체를"대향 인한 수요의 변화에,이 복잡한 피사체의 다양한 부분들은 얼굴 급격한 변화는 있지만 결합 할 알고리즘은 상대적으로 안정하다.

사용할 때 그 기본 구성 요소의 일부를 변경하지 않으며, 이들의 조합 일정 시간 변화.

어떻게 해결하는 방법 : 변경된 및 변경을 분리.

키 코드 : 빌더 : 만들기 및 예제를 제공은, 감독 : 의존성 관리 인스턴스를 구축.

적용 예 : 1 등 KFC, 버거, 콜라, 감자 튀김, 튀긴 닭 날개, 이동은 일정이며, 그 조성은 지속적으로 소위 생성, 변화하고있다 "패키지를."2, 모두 StringBuilder에 JAVA.

장점 : 1, 독립 빌더, 확장이 용이.이 위험의 세부 사항을 제어하기 쉽다.

단점 : 1, 제품이 공통적으로 가지고 있어야 범위가 제한됩니다.복잡한 내부 변경 2. 건설 클래스가 많이있을 것입니다.

사용 시나리오 : 1, 당신은 객체가 복잡한 내부 구조를 가지고 생성해야합니다.도 2는 상호 의존적 인 객체 속성 자체 내부에서 발생 될 필요가있다.

주 : 플랜트 모델 사이의차이이다 작성기 모델이 부품의 조립 순서에 더 관한 것이다.

실현

우리는 패스트 푸드 레스토랑 비즈니스 사례가있는 패키지는 일반 버거 (햄버거) 차가운 (차가운 음료) 한 잔이 될 수 있다고 가정합니다. 버거 (햄버거)를 베지 버거 (채식 버거) 또는 치킨 버거 (치킨 버거) 일 수있다, 그들은 용지 트레이에 싸여있다. 콜드 (차가운 음료)은 코카콜라 (코크스) 또는 펩시 콜라 (펩시)는, 그들이 병에 포장되어있을 수 있습니다.

우리는항목 인터페이스및 구현 엔티티 클래스항목 인터페이스(예 : 햄버거와 감기 등) 식품의 표현을 생성하며, 인터페이스 및 구현 기업이 식품 포장포장 인터페이스를포장 대표, 함부르크 용지 트레이의 패키지는 추운입니다 병에 포장.

그 다음 우리는항목과항목 MealBuilder의 조합을 통해 서로 다른 유형의 개체를 만들려면식사 클래스,ArrayList를하고식사를만들있습니다.BuilderPatternDemo, 우리는식사를만들MealBuilder 클래스의사용을입증한다.

빌더 패턴 UML 다이어그램

1 단계

식품 및 식품 포장 입력 인터페이스를 작성합니다.

Item.java

공용 인터페이스 항목 {
   공공 문자열 이름 ();
   포장 공공 포장 ();
   공공 플로트 가격 ();	
}

Packing.java

포장 공용 인터페이스 {
   공공 문자열 팩 ();
}

2 단계

생성 포장 엔티티 클래스 인터페이스를 구현한다.

Wrapper.java

포장 공용 클래스 래퍼 구현 {

   @Override
   공공 문자열 팩 () {
      "래퍼"를 반환;
   }
}

Bottle.java

포장 공용 클래스 병 구현 {

   @Override
   공공 문자열 팩 () {
      "병"를 반환;
   }
}

3 단계

추상 클래스 항목 인터페이스를 만들기 클래스는 기본 기능을 제공합니다.

Burger.java

공개 추상 클래스 버거는 항목을 {구현

   @Override
   포장 공공 포장 () {
      ) (새 래퍼를 반환;
   }

   @Override
   공공 추상적 인 플로트 가격 ();
}

ColdDrink.java

공개 추상 클래스 ColdDrink는 항목을 {구현

	@Override
	포장 공공 포장 () {
       () 새로운 병을 반환;
	}

	@Override
	공공 추상적 인 플로트 가격 ();
}

4 단계

엔티티 클래스 버거와 ColdDrink의 확장 만들기.

VegBurger.java

공용 클래스 VegBurger는 버거를 {확장

   @Override
   공공 플로트 가격 () {
      25.0f를 반환;
   }

   @Override
   공공 문자열 이름 () {
      "채식 버거"를 반환;
   }
}

ChickenBurger.java

공용 클래스 ChickenBurger는 버거를 {확장

   @Override
   공공 플로트 가격 () {
      50.5f를 반환;
   }

   @Override
   공공 문자열 이름 () {
      "치킨 버거"를 반환;
   }
}

Coke.java

공용 클래스 콜라는 ColdDrink를 {확장

   @Override
   공공 플로트 가격 () {
      30.0f를 반환;
   }

   @Override
   공공 문자열 이름 () {
      "콜라"를 반환;
   }
}

Pepsi.java

공용 클래스 펩시는 ColdDrink를 {확장

   @Override
   공공 플로트 가격 () {
      35.0f를 반환;
   }

   @Override
   공공 문자열 이름 () {
      "펩시 콜라"를 반환;
   }
}

5 단계

위에서 정의 된 항목 개체, 식사 클래스를 만듭니다.

Meal.java

수입 인 java.util.ArrayList;
가져 오기를 java.util.List;

공용 클래스 식사 {
   개인 목록 <항목> 항목 = 새로운 ArrayList를 <항목> ();	

   공공 무효의 addItem를 (항목 항목) {
      의 Items.Add (항목);
   }

   공공 플로트 getCost () {
      플로트 비용 = 0.0f로;
      {(항목 항목 항목)에 대한
         비용 + = item.price ();
      }		
      비용을 반환;
   }

   공공 무효 showItems () {
      {(항목 항목 항목)에 대한
         System.out.print ( "항목 :"+ item.name ());
         System.out.print (. ", 포장 :"+ Item.packing () 팩 ());
         에서 System.out.println ( "가격 :"+ item.price ());
      }		
   }	
}

6 단계

클래스, 식사 클래스 객체를 생성하는 책임이있는 실제 빌더를 만들 MealBuilder.

MealBuilder.java

공용 클래스 MealBuilder {

   공공 식사 prepareVegMeal () {
      식사 식사 = 새로운 식사 ();
      meal.addItem (새 VegBurger ());
      meal.addItem (새 콜라 ());
      식사를 반환;
   }   

   공공 식사 prepareNonVegMeal () {
      식사 식사 = 새로운 식사 ();
      meal.addItem (새 ChickenBurger ());
      meal.addItem (새 펩시 ());
      식사를 반환;
   }
}

7 단계

BuiderPatternDemo 빌더 모드 (빌더 패턴)을 보여 MealBuider를 사용합니다.

BuilderPatternDemo.java

공용 클래스 BuilderPatternDemo {
   공공 정적 무효 메인 (문자열 []에 args) {
      MealBuilder mealBuilder = 새로운 MealBuilder ();

      식사 vegMeal = mealBuilder.prepareVegMeal ();
      에서 System.out.println ( "채식 식사");
      vegMeal.showItems ();
      에서 System.out.println ( "총 비용 :"+ vegMeal.getCost ());

      식사 nonVegMeal = mealBuilder.prepareNonVegMeal ();
      에서 System.out.println ( "\ n \ nNon - 채식 식사");
      nonVegMeal.showItems ();
      에서 System.out.println ( "총 비용 :"+ nonVegMeal.getCost ());
   }
}

8 단계

출력을 확인합니다.

채식 식사
항목 : 채식 버거, 포장 : 래퍼, 가격 : 25.0
항목 : 콜라, 포장 : 병, 가격 : 30.0
총 비용 : 55.0


비 채식 식사
항목 : 치킨 버거, 포장 : 래퍼, 가격 : 50.5
항목 : 펩시, 포장 : 병, 가격 : 35.0
총 비용 : 85.5