Head First Design Patterns 1장 디자인 패턴 소개.


스트래티지 패턴(strategy pattern)

: 객체의 Action 의 내용을 캡슐화 하여 교환해서 사용할 수 있도록 만든다.


책에서 처음 설명하는 Duck 클래스는,

quack() 메소드와 fly() 메소드를 별도의 인터페이스로 분리하고

이 인터페이스를 구현하는 클래스를 만들어 사용하는 것이다.


그리고 Duck 을 상속받은 클래스는,

생성자에서 해당 클래스에 맞는 quack() 와 fly() 인터페이스를 구현한 클래스를 

사용하도록 한다.


수많은 Sub class 가 몇 가지 중복된 행동에서 한 가지를 선택해야 하는 경우라면,

코드 재사용 및 유지 보수를 한꺼번에 해결 할 수 있는 좋은 패턴이다.


하지만 스트래티지 패턴의 더욱 큰 장점은

실행시간에 Action의 내용 (알고리즘, 즉 메소드의 내용)을 바꿀 수 있다는 것이다.


예를들면, 액션 게임의 케릭터가 무기가 바뀌었을 때,

스트래티지 패턴을 사용하였다면, 단순히 attack() interface 를 구현한 클래스만 교체해 주면 해결된다.


과연, 책의 1장에서 소개해 줄 만한 쉽고도 강력한 패턴이다.


예제코드 (원문: http://en.wikipedia.org/wiki/Strategy_pattern#Example)


반응형

설정

트랙백

댓글