2013-01-16 5 views
11

나는이 두 가지의 차이점을 설명 할 수있는 좋은 예제와 튜토리얼을 찾고자했지만 어떤 정보도 찾을 수 없었다.순수 제작과 인다이 렉션의 차이점

순수 제조 및 간접 지정은 중간 객체에 대한 책임을 만들고 할당하는 역할을하므로 누구나 이러한 디자인 패턴의 차이점을 설명 할 수 있습니까?

감사합니다.

답변

15

구성 요소 간의 결합을 낮추려면 간접 지정 간접 지정을 사용합니다. Larman이 UML 및 패턴 적용에서 제안한 예제는 TaxCalculatorAdapter 클래스입니다. 가능한 어댑터의 내부 동작을 알지 못하도록 클라이언트를 보호하기 위해 필요한 API 만 노출하면서 간접적 인 방법으로 클라이언트를 숨 깁니다. 이 인다이 렉션은 적응 자들과 매우 결합 될 것이지만, 단지 느슨하게 클라이언트들과 결합 될 것이다.

순수 제조에서 PersistentStorage실제로는 낮은 커플 링을 제공한다는 점에서 Indirecton (Larman이 책에서 이렇게 말한다)이다. Pure Fabrication은 도메인 모델의 일부가 아닌 개체를 생성한다는 점에서 그 이상입니다.

Larman이주는 예제는 도메인 클래스 Sale입니다. Sale에는 저장할 모든 데이터가 있으므로 판매 저장을위한 논리를 보유 할 수 있습니다 (정보 전문가). 그러나 영속성 논리는 판매의 개념과 관련이 없으므로 클래스가 불투명 해집니다. 또한 Sale을 특정 DB API에 연결하여 재사용을 제한합니다 (구조에 대한 간접 참조). 저장은 일반적인 활동이기 때문에 저장할 필요가있는 객체에 코드를 복제 할 수도 있습니다. 이를 방지하려면 무언가를 만들어야합니다 (순수 제작). 즉 도메인 모델 (여기서는 PersistentStorage)의 일부가 아니지만 응용 프로그램에서 필수적인 활동을 캡처합니다.

이와 같이 Pure Fabrication은 전문화되었거나 오히려 간접 지정의 변형입니다.

+1

나는 * 순수한 Fabrications * 정의에 의해 ** 매우 응집력 **입니다. 다른 클래스에 * 간접 지정 *을 통해 쉽게 할당 할 수없는 책임이 있으므로 클래스를 작성하십시오. 라만 (Larman)은 "필사적으로"말합니다 :-) 그래서, 그 책임을 맡을 새로운 수업을 만들어서, 그 수업은 단지 한 가지 일을하기 때문에 매우 응집력이 있습니다. – Fuhrmanator