8

이것은 디자인 패턴에 익숙하지 않았기 때문에 아마도 초보 질문 이었지만 템플릿 방법 및 전략 DP를보고 있었고 매우 비슷하게 보입니다. 정의를 읽고, UML을 검토하고, 코드 예제를 확인해 볼 수는 있지만, 전략 패턴은 템플릿 메서드 패턴을 사용하는 것 같지만,이 패턴을 템플릿으로 전달하고 객체 (즉, 컴포지션)를 전달하는 것처럼 보입니다.템플릿 방법 및 전략 디자인 패턴

그런데 Template Method는 기본 OO 상속과 같습니다.

차이점에 대한 핵심적인 부분이 누락 되었습니까? 내가 기본 템플릿 상속을 더 많이 만드는 Template Method에 대해 빠진 것이 있습니까?

참고 : 이전 게시물이 (672083) 있지만 더 많이 사용할 수있는 경우가 많지만 패턴 자체에 대한 내 생각은 유효합니다.

답변

9

기본적으로 모두 의미론으로 분류됩니다. 전략 패턴을 사용하면 특정 알고리즘/프로 시저 (전략)를 다른 개체로 전달할 수 있습니다. 템플리트 방법을 사용하면 알고리즘의 특정 측면을 무시하면서도 특정 측면을 동일하게 유지할 수 있습니다 (순서를 동일하게 유지하고 시작과 끝에서 항상 수행되는 작업 ... 템플리트). 상속은 데이터 모델에서 'IS-A'관계를 모델링하는 방법입니다.

틀림없이 템플릿 메서드는 상속을 사용하여 쉽게 구현할 수 있습니다 (특히 펑터를 사용하면 쉽게 구성을 사용할 수 있지만) 또한 전략 패턴은 종종 템플릿 메서드이지만 구문이 비슷한 경우 의미가 크게 다릅니다 .

+0

+1 좋은 간결한 설명을 위해, 그리고 상속에 대한 구성을 언급하기 위해 –

0

Strategy 디자인 패턴
는 (객체 조성물 통해) 실행 시간에 동적으로
객체 의 알고리즘을 교환하는 방법을 제공한다.

예를 들어 주문 처리 시스템에서 가격을 계산합니다.
다양한 방법으로 가격을 계산하려면 다른 가격 책정 알고리즘을 지원하여 사용할 알고리즘을 런타임에 선택 (주입)하고 동적으로 교환 할 수 있도록 을 지원할 수 있습니다.

Template Method 디자인 패턴
는 수있는 방법 (서브 클래스를 통해) 컴파일 시간
에 정적 클래스의 동작의 일부를 재정의합니다.

예를 들어, 재사용 가능한 응용 프로그램 (프레임 워크) 디자인.
응용 프로그램은 동작의 공통 (불변) 부분을 구현하므로 응용 프로그램 사용자가 자신의 필요에 맞게 변형 부품 을 다시 정의 할 수 있도록 하위 클래스를 작성할 수 있습니다. 그러나 하위 클래스 작성자는 의 불변 부분이나 동작의 구조 (불변 부분과 변형 부분의 구조)을 변경할 수 없어야합니다.