전략 패턴
•
전략 패턴은 컨텍스트(context)에서 사용할 변경 가능한 전략(알고리즘)을 인터페이스
를 이용하여 캡슐화하고, 필요에 따라 동적으로 변경하여 사용할 수 있도록 하는 디자인 패턴이다.
여기서 전략(알고리즘)이란 독립적인 책임으로 분리가 가능한 기능을 의미한다.
Weapon.java
public interface Weapon {
public void attack();
}
Java
복사
Knife.java
public class Knife implements Weapon{
@Override
public void attack() {
System.out.println("칼 공격");
}
}
Java
복사
//교환 가능
public void setWeapon(Weapon weapon) {
this.weapon = weapon;
}
public void attack(){
if (weapon == null) {
System.out.println("맨손 공격");
} else {
//위임(Delegate)
weapon.attack();
}
}
}
Java
복사
•
무기(Weapon)는 공격(attack)이라는 기능을 가지는 하나의 접근점(strategy)이 됩니다.
setWeapon 메서드를 통해 접근점을 변경할 수 있습니다.
weapon.attack() 으로 weapon에게 공격기능을 위임합니다.
main.java
public class main {
public static void main(String[] args) {
GameCharacter character = new GameCharacter();
character.attack();
character.setWeapon(new Knife());
character.attack();
character.setWeapon(new Sword());
character.attack();
}
}
Java
복사
•
전략 패턴은 컨텍스트(context)에서 사용할 변경 가능한
전략(알고리즘)
을
인터페이스
를 이용하여 캡슐화하고, 필요에 따라 동적으로 변경하여 사용할 수 있도록 하는 디자인 패턴이다.
여기서 전략(알고리즘)이란 독립적인 책임으로 분리가 가능한 기능을 의미한다.