본문 바로가기

Design Patterns

Template Method Pattern ③

336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.
자자 그럼.. 템플릿 메소드에 대해서 정의를 이렇게 내리고 있습니다 ^^ ㅋ
템플릿 메소드 패턴에서는 메소드에서 알고리즘의 골격을 정의합니다. 알고리즘의 여러 단계 중 일부는 서브클래스에서 구현할 수 있습니다 템플릿 메소드를 이용하면 알고리즘의 구조는 그대로 유지하면서 서브클래스에서 특정 단계를 재정의 할 수 있습니다.

요런 클래스 다이어 그램이 그려집니다. +_+ 호호.. 제가 만들었던 거랑 비슷하지요??

사용자 삽입 이미지

이다음에는 새로운 디자인 원칙에 대해서 설명을 합니다. 바로 할리우드 원칙이란 건데요. 이렇게 표현이 되어있습니다.

할리우드 원칙
먼저 연락하지 마세요. 저희가 연락 드리겠습니다.
무슨 소릴까요 과연..? 의존성에 문제 입니다.고수준의 구성요소 즉 슈퍼 클래스가 서브 클래스에 의존하고 서브클래스 역시도 슈퍼 클래스에 의존하는 방식은 서로간의 의존성이 굉장히 꼬여 있기 때문에 지금이야 이렇게 간단한 상속구조를 가지고 있지만 상속에 상속을 받는 굉장히 복잡한 관계에서는 어떻게 클래스가 디자인 된것인지 전혀 알수가 없다.. 가 시사하는 문제점이더군요..

이런 이런 문제점을 처리하는데에서 할리우드 원칙인 먼저 연락하지 말라는 의미는 뭘까요? 이전에 템플릿 메소드에서 배웠던 알고리즘의 분리와 관계가 있지 않을까요?? 그렇습니다. 서브 클래스가 하는 역할은 뭘까요? 단순히 변경이 있는 알고리즘에 대해서 다른점을 정의 해 놨을 뿐입니다. 어쨌거나 서브 클래스에서 하는 알고리즘은 슈퍼클래스에 정의가 되어 있기에 슈퍼클래스가 서브클래스에게 먼저 연락을 주는 꼴이 되겠군요..

여기서 하나 의문이 들긴 합니다. 그럼 알고리즘을 변경하고 싶다면 어떻게 해야할까??