> Java > java지도 시간 > 디자인 패턴 중 크리에이터 패턴에 대한 자세한 설명

디자인 패턴 중 크리에이터 패턴에 대한 자세한 설명

零下一度
풀어 주다: 2017-06-23 09:34:31
원래의
1480명이 탐색했습니다.

정의(바이두 백과사전에서):
핵심 아이디어는 "복잡한 객체 구성 알고리즘"을 "구성 요소 및 조립 방법"에서 분리하여 구성 요소 알고리즘과 조립 방법이 독립적으로 변화에 대응할 수 있도록 하는 것입니다. 재사용 가능 구성 알고리즘은 다양한 표현을 생성할 수 있으며 다양한 구성 프로세스는 동일한 구성 요소 조립 방법을 재사용할 수 있습니다. .

자동차는 엔진부터 후방까지 다양한 부품으로 구성됩니다. 거울. 자동차를 조립하여 사용자에게 제공하는 것은 분명히 비현실적입니다.

결국 사용자가 원하는 것은 자동차를 어떻게 만드는지에 관심이 없다는 것입니다. 예를 들어 내가 아우디를 갖고 싶다면 위의 예를 들어서 감독님께 아우디를 만들고 싶다고 말씀드리죠. 그러면 Director는 Audi에 해당하는 Builder 인터페이스(ConcreteBuilder 인스턴스)를 찾습니다. ConcreteBuilder는 Audi를 만드는 모든 부분과 단계를 알고 있습니다.

예를 들어 먼저 큰 프레임을 만든 다음 엔진을 선택한 다음 적절한 타이어를 선택하고 마지막으로 클릭합니다. 백미러, 이러한 단계는 buildPart 프로세스입니다. 간단히 말해서 복잡한 프로세스이지만

사용자에게는 Audi이므로 이러한 복잡한 프로세스에 신경 쓰지 않습니다. 또한 이 예는 추상적인 공장과 매우 ​​유사해 보이지만 중요한 차이점이 있습니다. 공장은 자동차의 다양한 부품을 생산하는 역할만 담당하고 조립은 담당하지 않습니다.

두 모드를 구별하는 중요한 부분입니다.

Components:

Builder: 제품 개체의 각 구성 요소 구성을 표준화하기 위한 추상 인터페이스를 제공합니다. 이 인터페이스는 생성될 복합 객체의 부분을 지정하며 특정 객체 구성 요소 생성을 포함하지 않습니다.

위의 예에 해당하는 것은 엔진 등 자동차의 다양한 부품을 조립하는 것입니다. ConcreteBuilder: 다양한 비즈니스 로직에 대한 복잡한 개체의 각 부분을 구체적으로 생성하기 위해 Builder 인터페이스를 구현합니다. 제작 과정이 완료된 후 제품의 예시를 제공하세요. 위에 해당하는 것은 아우디 빌더를 조립하고, 농기계 바퀴를 차근차근 추가하는 것입니다...

디렉터: 특정 빌더를 불러 복잡한 오브제의 다양한 부분을 만들어내는 디렉터는 특정 제품 정보를 포함하지 않고 오로지 작업만 합니다. 부품이 완전하게 또는 어떤 순서로 생성되었는지 확인하는 책임이 있습니다.

"Director"라는 단어는 감독을 의미하며 그의 책임은 매우 명확합니다. 바로 일정 관리입니다. 위의 예에서 프로듀서로서 나의 아이디어가 Audi를 사용하는 것이라면 감독은 ConcreteBuilder에게 그렇게 하도록 알릴 것입니다.
제품: 생성할 복합 개체입니다.
위에 해당하는 것이 아우디입니다.


장점과 단점:

장점:

느슨한 결합: 복잡한 제품의 생성 단계를 다양한 방법으로 분해하여 생성 프로세스를 더 명확하게 만들고 복잡한 개체의 생성 프로세스를 더 정확하게 제어할 수 있습니다.

재사용성 향상: 건축 제품을 만들고 조립 및 분해하면 건축 제품을 재사용할 수 있습니다. 단점:

빌더 모드로 제작된 제품은 일반적으로 공통점이 많고, 구성요소도 비슷할 경우, 제품 간의 차이가 클 경우 빌더 모드를 사용하기에는 적합하지 않으므로 사용 범위가 다릅니다. 특정 제한 사항.

제품의 내부 변경 사항이 복잡한 경우 이러한 변경 사항을 구현하기 위해 특정 빌더 클래스를 많이 정의해야 하므로 시스템이 매우 커질 수 있습니다.

참조:


위 내용은 디자인 패턴 중 크리에이터 패턴에 대한 자세한 설명의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
최신 이슈
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿