본문 바로가기

java/디자인패턴

전략 패턴

전략 패턴은 변하는 행위를 클래스로 캡슐화 하여 동적으로 자유롭게 변경 가능하도록 도와주는 패턴 이다.

쉽게 말하면 기능이 추가나 수정이  되었을때 그 기능을 사용하는 클래스를 변경하지 않고 클래스로 캡슐화 하여 개방폐쇄원칙을 아주 잘 지키고 있는 패턴이다.


 그러면 축구 프리킥 예제를 가지고 패턴 설명을 하겠다.


Kick클래스는 프리킥을 차기 위해 여러가지 종류의 킥을 받아서 프리킥을 찬다.

public class Kick {
private FreeKick freeKick;

public void setFreeKick(FreeKick freeKick) {
this.freeKick = freeKick;
}

public void freekick() {
System.out.println(freeKick.kick());
}
}


프리킥 인터페이스를 정의하고

public interface FreeKick {
String kick();
}


프리킥의 킥 종류를 구현 한다.

public class InsideKick implements FreeKick {
@Override
public String kick() {
return "inside kick";
}
}


그러면 아래와 같이 원하는 종류의 킥으로 프리킥을 찰 수가 있다.

public class FreeKickMain {
public static void main(String[] args) {
Kick kick = new Kick();
kick.setFreeKick(new InsideKick());
kick.freekick();

kick.setFreeKick(new OutsideKick());
kick.freekick();
}
}


또한 무회전 킥을 연습하여 무회전 킥이 추가 되었다고 한다면 Kick을 차는 비즈니스 로직은 수정하지 않고도 추가할 수 가 있다.


그러면 다음 시간에는 다른 곳에서는 어떻게 전략 패턴이 쓰이는지 알아보겠다.



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

옵저버 패턴  (0) 2017.12.15