전략패턴
전략 패턴(Strategy Pattern) 이란 전략을 쉽게 바꿀 수 있도록 해주는 디자인 패턴이다. 여기에서 전략이란 어떤 목적을 달성하기 위해 일을 수행하는 방식, 비즈니스 규칙, 문제를 해결하는 알고리즘 등으로 이해할 수 있다.[1]
개요
디자인패턴에서 전략패턴(strategy pattern)을 따르는 클래스는 유연하고 재사용 가능한 객체 지향 소프트웨어를 설계하기 위해 반복되는 디자인 문제를 해결하는 방법, 즉 객체는 구현, 변경, 테스트, 재사용이 쉬워야 한다는것을 기술하는 23가지 GoF 디자인 패턴중 하나이다.[2] 같은 문제를 해결하는 여러 알고리즘이 클래스별로 캡슐화되어 있고 이들이 필요할 때 교체할 수 있도록 함으로써 동일한 문제를 다른 알고리즘으로 해결할 수 있게하는 패턴이다.[1]
특징
목적
하나의 결과를 만드는 목적(메소드)는 동일하나, 그 목적을 달성할 수 있는 방법(전략, 알고리즘)이 여러가지 존재할 경우에 사용하는 패턴이다. Context의 변경을 최소화하고, 인터페이스를 통해 다양한 타입을 만들어 코드를 변경할 수 있다.[3]
장점
새로운 알고리즘이 개발되더라도 기존에 작성했던 클래스의 코드를 수정하지 않고도 이를 쉽게 추가 적용할 수 있게 한다. SOLID원칙에서 개방-폐쇄원칙(OCP)를 만족한다.[4]
구조 [1]
Strategy는 인터페이스나 추상클래스로 외부에서 동일한 방식으로 알고리즘을 호출하는 방법을 명시한다. ConcreteStrategy는 전략패턴(strategy pattern)에서 명시한 알고리즘을 실제로 구현한 클래스이다. Context는 전략패턴(strategy pattern)을 이용하는 역할을 수행한다. 필요에 따라 동적으로 구체적인 전략을 바꿀 수 있도록 setter 메소드를 제공한다.
활용
각주
- ↑ 1.0 1.1 1.2 정인상, 채흥석, <자바 객체지향 디자인 패턴: UML과 GoF 디자인 패턴 핵심 10가지로 배우는>, <<한빛 미디어>>, 2014-04-28
- ↑ 전략 패턴 위키백과 - https://ko.wikipedia.org/wiki/%EC%A0%84%EB%9E%B5_%ED%8C%A8%ED%84%B4
- ↑ 문메이, <전략패턴(Strategy Pattern)>, <<개인 블로그>>, 2018-04-03
- ↑ favxoe, <전략패턴>, <<개인 블로그>>, 2019-11-06
참고자료
- 정인상, 채흥석, <자바 객체지향 디자인 패턴: UML과 GoF 디자인 패턴 핵심 10가지로 배우는>, <<한빛 미디어>>, 2014-04-28
- 전략 패턴 위키백과 - https://ko.wikipedia.org/wiki/%EC%A0%84%EB%9E%B5_%ED%8C%A8%ED%84%B4
- 문메이, <전략패턴(Strategy Pattern)>, <<개인 블로그>>, 2018-04-03
- favxoe, <전략패턴>, <<개인 블로그>>, 2019-11-06