전략 패턴
각 객체들이 할 수 있는 행위들을 각 전략클래스에 생성하고, 각 전략클래스는 하나의 추상적인 접근점 (인터페이스)를 상속받아 각각 자신의 행위들을 정의한다.
행위를 변경하고 싶을때마다 전략을 바꾸는 코드로 유연하게 개발할 수 있다.
예제
public interface Weapon {
public void attack();
}
public class knife implements Weapon {
@Overide
public void attack() {
System.out.println("검 공격");
}
}
public class Ax implements Weapon {
@Overide
public void attack() {
System.out.println("도끼 공격");
}
}
public class Character {
//접근점
private Weapon weapon;
//교환 가능 기능
public void setWeapon(Weapon weapon) {
this.weapon = weapon;
}
public void attack() {
if(weapom == null){
System.out.println("주먹 공격")
}else {
weapon.attack(); //델리게이트
}
}
}
실행
public static void main(String[] args) {
Character character = new Charater();
character.attack(); //맨손 공격
character.setWeapon(new Knife());
character.attack();//검 공격
character.setWeapon(new Ax());
character.attack();//도끼 공격
}
'Java > Design Pattern' 카테고리의 다른 글
Template Method Pattern (0) | 2020.09.01 |
---|---|
어댑트 패턴(Adapter Pattern) (0) | 2020.08.25 |