Programming/Patterns

[Pattern]State Pattern과 Strategy Pattern

MB Brad KWON 2012. 10. 9. 22:43

프로젝트 네이버 개발자센터 URL : http://developer.naver.com/projects/dpviedorental


 State Pattern과 Strategy Pattern을 이용하여 기존의 코드는 최대한 건드리지 않고 클라이언트 코드만 수정하여 구현하도록 만들었다. 아직 디자인패턴을 배우는 단계이지만 최대한 OCP를 지키면서 구현하려고 노력했다.


객체지향에서는 모든 변화의 단위를 클래스로 표현한다. 그렇게 작성해야 차후에 변경(유지/보수)이 편리하기 때문이다. 변화의 단위 중에 상태와 전략(알고리즘)을 구현하는 설계패턴에 대해서 알아보자.


State Pattern

스테이트 패턴은 상태를 클래스로 표현한다. 상태를 클래스로 표현하면 상태의 변화를 클래스의 교체를 통해서 나타낼 수 있다. 새로운 상태를 추가하는 경우에 무엇을 프로그램하면 되는지 명확해진다. IF문등을 이용해서 상태를 나타내는 flag를 확인할 필요없이 클래스 자체가 상태를 표현하게 되기 때문에 클라이언트 코드도 간결해진다.


Strategy Pattern

스트레티지 패턴을 이용하면 알고리즘을 사용하는 클라이언트에 상관없이 독립적으로 알고리즘을 다양하게 변경이 가능해진다. 알고리즘을 변경할 때, 메소드가 선언되어 있는 클래스 혹은 인터페이스를 이용하여 메소드를 정의해서 사용하면 기존의 코드를 건드리지 않고 클라이언트의 알고리즘 변경이 손쉽게 이루어진다.

'Programming > Patterns' 카테고리의 다른 글

[Pattern]Mediator Pattern  (0) 2013.12.03
[Pattern]MVVM Pattern  (0) 2013.12.03
[Pattern]Observer Pattern  (0) 2013.08.25
[Pattern]MVC Pattern과 MVP Pattern 그리고 차이  (0) 2013.04.10
[Pattern]Singleton Pattern  (0) 2012.09.21