전략 패턴은 알고리즘들의 패밀리를 정의하고, 각 패밀리를 별도의 클래스에 넣은 후 그들의 객체들을 상호교환할 수 있도록 하는 행동 디자인 패턴입니다.

위 사진처럼 예를 들어서 왕이 토끼에게 진행을 마끼고 모자장수가 증언을 하는 상황에서 왕이 왕비로 바뀐다면? 토끼가 다른 호랑이로 바뀐다면? 이런 상황이 생기면 매 코드에 if를 넣어야한다.
그래서 추상클래스 재판관, 진행자, 증인등을 두어서 별도의 객체 즉 클래가 들어가도 되도록 구현한 디자인 패턴이다.
또한

위 사진은 문지기에게 쥐가 성에 들어오려고 한다면 출입을 금지하라는 로직인데 여기서 갑자기 호랑이도 들어오지 못하게 막아라 다람쥐도 들어오지 못하게 막아라 등등 늘어났다.
이를 동물이라는 추상메서드를 두어 처리하는 전략패턴을 구현해 보았다.
package ex01;
/*
* Animal 생성(abstract)
* 타입일치(다향성) = 쥐(동물), 호랑이(동물)
* 문지기한테 DIP만 지켜주면 됨
* */
public class App {
public static void main(String[] args) {
Animal m1 = new Mouse();
Animal t1 = new Tiger();
Doorman d1 = new Doorman();
d1.쫒아내(m1);
}
}
쥐와 호랑이는 동물이라는 공통의 추상메서드 타입으로 묶어서 관리를 할 수 있게 하였다.
Share article