전략패턴 ★★★
by yjym331. 전략 패턴의 개념
전략 패턴은 객체의 동작(전략)을 캡슐화하고 이를 교체 가능한 형태로 제공합니다.
이 패턴을 사용하면 알고리즘을 독립적으로 변경할 수 있으며, 클라이언트 코드에 영향을 주지 않고 새로운 전략을 추가할 수 있습니다.
2. 핵심 구성요소
전략(Strategy): 각각의 알고리즘에 해당하는 인터페이스나 추상 클래스를 정의합니다.
구체적인 전략(Concrete Strategy): 전략을 실제로 구현한 클래스입니다.
컨텍스트(Context): 전략 객체를 사용하는 클라이언트입니다. 컨텍스트는 전략을 선택하고 실행합니다.
3. 전략 패턴의 장점
유연성: 새로운 전략을 추가하거나 기존 전략을 변경하는 데 용이합니다. 클라이언트 코드에 영향을 주지 않고 새로운 전략을 도입할 수 있습니다.
결합도 감소: 컨텍스트와 전략 객체 간의 결합도가 낮아져, 유지보수가 쉬워집니다.
재사용성: 전략은 독립적으로 사용 가능하므로, 다른 컨텍스트에서 재사용이 가능합니다.
테스트 용이성: 각 전략은 독립적으로 테스트할 수 있으며, 모의 객체(Mock)를 사용하여 테스트하기 용이합니다.
4. 전략 패턴의 구현
전략 패턴은 다음과 같은 구조를 가집니다.
// 전략 인터페이스
interface PaymentStrategy {
void pay(int amount);
}
// 구체적인 전략 클래스들
class CreditCardPayment implements PaymentStrategy {
public void pay(int amount) {
// 신용카드 결제 로직
}
}
class PayPalPayment implements PaymentStrategy {
public void pay(int amount) {
// PayPal 결제 로직
}
}
// 컨텍스트 클래스
class ShoppingCart {
private PaymentStrategy paymentStrategy;
public void setPaymentStrategy(PaymentStrategy paymentStrategy) {
this.paymentStrategy = paymentStrategy;
}
public void checkout(int amount) {
// 결제 로직
paymentStrategy.pay(amount);
}
}
컨텍스트 클래스인 ShoppingCart는 PaymentStrategy 인터페이스를 통해 다양한 결제 전략을 선택하고 실행할 수 있습니다.
'Development > CS' 카테고리의 다른 글
MVC패턴, MVP패턴, MVVM패턴 ★★★ (0) | 2023.09.26 |
---|---|
프록시패턴 ★★★ (0) | 2023.09.26 |
DI와 DIP ★★★ (0) | 2023.09.25 |
팩토리 패턴 ★★★ (0) | 2023.09.25 |
싱글톤 패턴 ★★★ (0) | 2023.09.24 |
블로그의 정보
생각보다 실천을
yjym33