2013년 1월 4일 금요일

스트래티지 패턴(strategy pattern)

출처: Head First Design Patterns : 스토리가 있는 패턴 학습법

스트래티지 패턴(Strategy Pattern)
알고리즘군을 정의하고 각각을 캡슐화하여 교환해서 사용할 수 있도록 만든다. 스트래티지 패턴을 활용하면 알고리즘을 사용하는 클라이언트와는 독립적으로 알고리즘을 변경 할 수 있다.


클래스 다이어그램에서 보듯이 MallardDuck, RedheadDuck, RubberDuck, DecoyDuck 에 대해서 fly, quack 하는 행동이 다르다.

때문에 공통 부분은 Duck 에서 구현을 하고, 다른 부분은 interface-class 로 그룹화 시킨 또 다른 알고리즘 군에서 구현하고 있다.

개발자가 사용하는 MallardDuck, ..., DecoyDuck 에서는 각각에 따른 display 를 override 시키고, setFlyBehavior, setQuackBehavior 를 통해서 부모 클래스(Duck)의 flyBehavior, quackBehavior 를 설정 한다.

결국 어느 Duck 에서 fly, quack 을 하더라도 상황에 맞게 동작하게 된다.


학교 다닐때 소프트웨어 공학을 수강하면서 공부한 디자인 패턴을 요즘 다시 보고 있다.
기억이 새록새록 하다.

요즘은 교제도 좋아서 재미있게 웃어 가며 마치 소설책 보듯이 봐도 이해가 쉽게 되니, 참 좋은 세상이다. 학생때는 정말 이해 되지 않았었는데...사실 그때야 프로그램을 제대로 만들지 않았으니 필요성도 못 느꼈고, 필요성을 못 느끼니 머리에 제대로 떠오르지 않아 무조건 외운 기억 밖에 없다.

UML 부터 프로그램을 시작하면 설계가 구조화 되고 좋긴한데, 이것 부터 잡고 있으면 프로그램 안하고 그림 그리기 놀이 하고 있다는 말들이 많아서...에휴....

댓글 없음:

댓글 쓰기