본문 바로가기

디자인 패턴

전략 패턴 (Strategy Pattern)

728x90

전략 패턴

 

객체의 행위를 바꾸고 싶은 경우 직접 수정하지 않고 캡슐화한 알고리즘을 컨텍스트 안에서 바꿔주면서 상호 교체가 가능하게 만드는 패턴이다. 기본 틀 내에서 원하는 방식이 바뀔 경우 전략만 바꿔주는 것이다.

 

구현 형태

 

결제 방식에 대한 PaymentStrategy 인터페이스를 생성하고 KakaoCard와 LunaCard는 각각의 기본 구조를 가지고 있고 해당 인터페이스를 본인 클래스에서 구현한다.

 

 

Item 클래스를 이용해 ShoppingCart 클래스에 담는 형식으로 구현한다. ShoppingCart.pay에서 PaymentStrategy를 매개변수로 사용하는데 카드들이 PaymentStrategy 인터페이스를 참조하기 때문에 LunaCard를 사용하면 paymentMethod가 LunaCard가 되고 KakaoCard를 사용하면 KakaoCard가 된다.

 

 

같은 문제를 해결하는 여러 방식이 있을 때 해당 방식들을 클래스별로 캡슐화 해두고 상황에 따라 해결 방식을 교체할 수 있도록 해주는 패턴이다.

728x90

'디자인 패턴' 카테고리의 다른 글

옵저버 패턴 (Observer Pattern)  (0) 2023.04.26
팩토리 패턴 (Factory Pattern)  (0) 2023.04.25
싱글톤 패턴 (Singleton Pattern)  (0) 2023.04.24