# 스트래티지 패턴(Strategy Pattern)
스트래티지 패턴(Strategy Pattern)에서는 알고리즘군을 정의하고 각각을 캡슐화하여 교환해서 사용할수 있도록 만든다.
스트래티지을 활용하면 알고리즘을 사용하는 클라이언트와는 독립적으로 알고리즘을 변경할 수 있다.
오리 클래스를 만들기
오리를 상속 받아 붉은 오리를 만듬
상속을 활용해 코드를 재활용 할 수 있어 보였는데...
하지만 장난감 오리를 만들어보면 바로 문제가 발생한다.
장난감 오리
나무 오리
장난감 오리는 날수없고 나무 오리는 날수없고 소리도 낼 수 없다.
그러면 만들 때 마다 오버라이딩하여 새롭게 정의해야 하는 불편함이 있다.
이럴땐 바로 함수를 정의 하지말고 행동부분을 따로 인터페이스로 만들어 부모가 가지고 있고 자식이 자신이 필요한 데이터로 초기화해 사용 하는 방법을 쓰면 좋다.
- 행동을 인터페이스화 하기
소리가 있다 or 없다
날 수 있다 or 없다
- 변경된 부모 클래스 -
이렇게 행동들을 클래스로 만들고 오리에 인터페이스로 넣어주면 자식들의 행동은 자식이 초기화해 사용하면 된다.
- 변경된 자식 클래스 -
함수를 오버라이딩해 재정의 할 필요가 없어젔다.
생성자 함수에서 초기화해주면 끝.
- 완성 -
- 핵심 -
클래스를 설계할때 달라지는 부분을 찾아내고, 달라지지 않는 부분으로부터 분리 시킨다. 바뀌는 부분을 따로 뽑아서 캡슐화시킨다.
그렇게 하면 나중에 바뀌지 않는 부분에는 영향을 미치지 않은 채로 그 부분만 고치거나 확장할 수 있다.
'Programming > Design Pattern' 카테고리의 다른 글
비지터 패턴(Visitor Pattern) (0) | 2019.04.12 |
---|---|
중재자 패턴(Mediator Pattern) (0) | 2018.02.20 |
서비스 로케이터 패턴 (Service Locator Pattern) (0) | 2018.02.19 |
애자일 설계 (0) | 2017.11.11 |
옵저버 패턴(Observer Pattern) (0) | 2015.12.15 |
객체 지향 프로그래밍(OOP) (0) | 2015.12.12 |
디자인 패턴의 종류 (0) | 2015.08.16 |