전략 패턴(Strategy Pattern)이란?
전략 패턴은 알고리즘을 정의하고 각각을 캡슐화하여 교환 가능하도록 만드는 패턴이다. 이 패턴은 동일한 문제를 해결하기 위해 여러 알고리즘이 필요하거나, 알고리즘의 변경이 필요한 경우에 유용하게 사용된다. 전략 패턴의 핵심 아이디어는 알고리즘을 클라이언트로부터 독립적으로 정의하고, 클라이언트가 사용할 전략을 동적으로 교체할 수 있도록 하는 것이다.
전략 패턴의 주요 구성 요소
1. 전략(Strategy): 알고리즘을 나타내는 인터페이스 또는 추상 클래스이다. 이 인터페이스를 구현하는 여러 전략들이 있다.
2. 구체적인 전략(Concrete Strategy): 전략을 실제로 구현한 클래스로, 알고리즘의 구체적인 내용을 담고 있다.
3. 컨텍스트(Context): 전략 객체를 사용하는 클라이언트이다. 컨텍스트는 전략을 가지고 있으며, 필요에 따라 전략을 교체할 수 있다.
전략 패턴의 특징
1. 알고리즘 교체의 용이성: 전략 패턴은 알고리즘을 캡슐화하고 이를 동적으로 교체할 수 있도록 한다. 클라이언트는 전략을 변경하더라도 컨텍스트의 코드에는 영향을 주지 않고 새로운 전략을 사용할 수 있다.
2. 클라이언트와 전략의 독립성: 클라이언트는 알고리즘을 직접 구현하지 않고 전략 객체에 위임하여 사용한다. 이로써 클라이언트와 전략이 서로 독립적으로 확장 및 수정될 수 있다.
3. 알고리즘의 캡슐화: 각각의 전략은 독립적으로 캡슐화되어 있어서 알고리즘의 구현 내용을 변경하거나 확장하기 쉽다.
4. 조건문 감소: 전략 패턴을 사용하면 조건문의 수가 감소하고, 이로써 코드의 가독성이 향상되고 유지보수가 용이해진다.
5. 확장성 및 유연성: 새로운 전략을 추가하거나 기존의 전략을 변경하여 시스템의 확장성과 유연성을 높일 수 있다.
6. 실행 시 동적 전략 변경: 전략 패턴은 실행 시 동적으로 전략을 변경할 수 있다. 이는 어플리케이션이 실행되는 동안에도 전략을 변경할 수 있는 유연성을 제공한다.
7. 알고리즘의 중앙 집중화: 전략 패턴은 서로 다른 알고리즘을 각각의 전략 클래스로 분리함으로써 알고리즘의 중앙 집중화를 방지한다.
8. 디자인 원칙 준수: 전략 패턴은 SOLID 원칙 중에서 개방-폐쇄 원칙(Open-Closed Principle, OCP)과 의존 역전 원칙(Dependency Inversion Principle, DIP)을 따르며, 객체지향 디자인 원칙을 잘 준수한다.
'SOFTWARE DESIGN PATTERN' 카테고리의 다른 글
[SOFTWARE DESIGN PATTERN] 06 커맨드 패턴(Command Pattern) (0) | 2023.11.26 |
---|---|
[SOFTWARE DESIGN PATTERN] 05 싱글턴 패턴(Singleton Pattern) (0) | 2023.11.26 |
[SOFTWARE DESIGN PATTERN] 04 팩토리 패턴(Factory Pattern) (0) | 2023.11.26 |
[SOFTWARE DESIGN PATTERN] 03 데코레이터 패턴(Decorator Pattern) (0) | 2023.11.26 |
[SOFTWARE DESIGN PATTERN] 02 옵저버 패턴(Observer Pattern) (0) | 2023.11.26 |