전략패턴이란
여러 알고리즘을 각각의 클래스로 캡슐화하고 공통된 인터페이스로 추상화한다.
로직을 수행하는 곳에서는 추상된 인터페이스만 사용함으로써
코드는 바뀌지 않지만 사용하는 알고리즘을 바꿀 수 있다.
환전을 예시로 전략패턴을 구현해보자
1. 환전 인터페이스 정의하고 인터페이스를 구현한다.
2. 인터페이스를 상속해 구현한다.
엔화 전략 패턴
![](https://velog.velcdn.com/images/choiys0212/post/5e66a4a1-4f56-4ced-8c00-c5348aef2c0c/image.png)
달러 전략패턴
3. 전략을 주입받고 주입받은 전략에 따라 환전을 해준다.
이처럼 클라이언트에서는 코드를 변경할 필요 없이 전략을 주입받아 사용이 가능해진다.
장단점
장점
- 새로운 전략을 추가하더라도 기존 코드를 변경하지 않는다.
OCP를 만족할 수 있다.
- 상속 대신 위임을 사용할 수 있다.
상속은 상위 클래스에서 변경되면 하위 클래스에서 영향을 미치지만 위임을 사용하면 하위 클래스는 전혀 영향을 받지 않는다.
- 런타임에 전략을 변경할 수 있다.
단점
- 클래스가 많아지고 복잡도가 증가한다.
- 클라이언트 코드가 구체적인 전략을 알아야한다.
참고자료
https://www.inflearn.com/course/%EB%94%94%EC%9E%90%EC%9D%B8-%ED%8C%A8%ED%84%B4/dashboard