나의 지식 보관소
Strategy Pattern / 전략 패턴 본문
스트래티지 패턴은 알고리즘군을 정의하고 각각을 캡슐화하여 교환해서 사용할 수 있도록 만드는 것이다. 스트래티지를 활용하면 알고리즘을 사용하는 클라이언트와는 독립적으로 알고리즘을 변경할 수 있다.
는 내가 보는 책에서 나온 정의이고 쉽게 말하자면, 객체가 할 수 있는 행위들을 전략으로 만들어 놓고, 동적으로 전략을 바꿔가며 행위를 수정 할 수 있도록한 패턴이다.
public class StrategyPattern {
static public void main(String args[]) {
Player player = new Player();
player.setAttackBehavior(new Punch());
player.PerformAttack();
player.setAttackBehavior(new Knife());
player.PerformAttack();
}
}
class Player {
AttackBehavior attackBehavior;
public void setAttackBehavior(AttackBehavior attackBehavior) {
this.attackBehavior = attackBehavior;
}
public void PerformAttack() {
attackBehavior.attack();
}
}
interface AttackBehavior {
public void attack();
}
class Punch implements AttackBehavior {
public void attack() {
System.out.println("죽빵");
}
}
class Knife implements AttackBehavior {
public void attack() {
System.out.println("칼빵");
}
}
위 코드로 보이듯 전략패턴을 통하여 플레이어가 주먹을 사용하다가 칼을 사용하도록 바꿀 수 있고. 만약 나중에 수정이 생겨 총을 사용하는 기능이 추가된다면 AttackBehavior을 구현하는 Gun 클래스를 추가해서 손쉽게 해결 할 수 있다.
'디자인 패턴' 카테고리의 다른 글
Observer Pattern / 옵저버 패턴 (0) | 2021.04.07 |
---|---|
SOLID 원칙 (0) | 2020.08.18 |
Singleton Pattern / 싱글톤 패턴 (0) | 2020.02.02 |