본문 바로가기
CS note/디자인 패턴, 프로그래밍 패러다임

strategy pattern (전략 패턴)

by 코드 이야기 2023. 1. 27.
728x90

 

strategy pattern (전략 패턴)

(= policy pattern, 정책 패턴)

 

객체의 행위를 바꾸고 싶은 경우 '직접' 수정하지 않고,

전략이라고 부르는 '캡슐화한 알고리즘'을

컨텍스트 안에서 바꿔주면서 상호 교체가 가능하게 만드는 패턴

 

객체들이 할 수 있는 행위에 대해 전략 클래스를 생성하는 패턴

 

인터페이스를 사용해 기본 행위를 정의한 후 객체의 행위를 변경하고싶을 때

직접적으로 행위를 수정하는 것이 아닌, 객체에서만 행위를 변경해 유연하게 확장하는 패턴

 

결론: 변경시 대응에 용이하도록 변경이 잦은 행위를 추상화하는 것

 

* 컨텍스트 : 상황, 맥락, 문맥. 어떠한 작업을 완료하는데 필요한 모든 관련 정보.

 

 

 

 

예제 코드 1 (Kotlin)

장바구니에 물건을 담은 후 각 카드(전략)로 결제했을 때의 금액을 나타내는 상황을 구현한 예제 

 

 

* interface : 구현부분이 없게 만들 수 있는 클래스, 상속을 받는 부분에서 인터페이스의 메서드 부분을 채워 구현하도록 함.

  abstract와의 차이점1 : 하위 클래스에서 사용시 콜론(':') 뒤에 인터페이스 명을 괄호를 붙이지 않고 적는다.

  abstract와의 차이점2 : 하위 클래스에서 사용시 인터페이스 내의 디폴트가 없는 메서드를 모두 구현해야 한다. ...

 

 

예제 2 (설계)

 

 

 

 

 


참고

 

[Kotlin] 클래스 6—인터페이스(interface), 추상 클래스(abstract class)

Kotlin에서 interface와 abstract class를 정의하고 사용하는 방법과 이들의 특징에 대하여 다룹니다.

medium.com

 

 

 


필자의 보완점

 

 

 

728x90

댓글