'스트래티지'에 해당되는 글 1건

  1. 2011.07.15 strategy pattern
Programming/Design Pattern2011. 7. 15. 09:45
 [한빛미디어 head first Design Pattern을 참고로 진행합니다]
 정식으로 독학한 첫번째 디자인 패턴

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

대강의 필요성은 상속과 캡슐화가 객체지향 프로그램의 전부라고 생각하는 사람에게 좋다.
예를들어 shape라는 객체를 만든다고 할때, shape를 상속받은 RoundRect, Rect 등 shape를 상속받은 클래스만 해도 꽤나 많을 것이다.

근데 shape에서는 물체의 이동을 추상형으로 선언하였고,
나머지 shape를 상속받은 클래스 들에서는 실제 그 메서드들을 구성했다고 했을 때,
shape의 이동 방법이나 알고리즘이 바뀐다면, 

shape 클래스를 제외한 shape를 상속받은 모든 객체에 대해서 알고리즘을 수정해 주어야 한다.

여러군대에서 수정이 일어나게 되는데, 이것은 프로그래머가 유지, 보수, 확장 하기가 어렵다는 뜻이 된다. 그만큼 버그도 많아질 수 있다.

이럴 때, 쉽게 말해 행동에 대해서 인터페이스를 선언하고, 그 인터페이스가 구현된 클래스들을 shape 클래스 안에 넣어주게 된다.

즉 클라이언트와 독립적으로 알고리즘을 변경할 수 있다. 에서 클라이언트는 shape를 상속 받은 클래스라고 하면 되려나?

아래 파일은 역대 최강 헤드퍼스트의 예제 파일이다.
다음 예제에서는 Duck 라를 클래스를 상속받아 여러가지 오리를 만들고,
오리의 행동에 대해서 인터페이스를 만들고 여러 클래스에 구현하여 상속 받고 그 행동들을 각각에 오리에 집어 넣어준 -_-;
블로그 시작 초기라서 아직은 표현이 많이 부족합니다. ㅠㅠ



 
Posted by 슈퍼 점프