티스토리 뷰

전략패턴이란?

  • 여러 알고리즘을 하나의 추상적인 접근점을 만들어 접근 점에서 서로 교환 가능하도록 하는 패턴입니다

예를들어 게임캐릭터와 무기를 구현한다고 했을때 전략패턴을 사용해 보겠습니다

public class GameCharacter {

  //접근점
    private Weapon weapon;

    public void attack() {

        //델리게이트 - weapon 객체에 위임한다
        weapon.doAttack();
    }

//교환 가능
    public void setWeapon(Weapon weapon) {
        this.weapon = weapon;
    }

}
public class Sword implements Weapon {

    public void doAttack() {
        System.out.println("검 공격");

    }

}

public class Knife implements Weapon {

    public void doAttack() {
        System.out.println("나이프 공격");

    }

}
public static void main(String[] args) {

        GameCharacter character = new GameCharacter();

        character.setWeapon(new Sword());
        character.attack();

        character.setWeapon(new Gun());
        character.attack();

        character.setWeapon(new Knife());
        character.attack();
    }

전략패턴의 이점

전략패턴을 적용할때의 이점은 컨텍스트 코드의 변경 없이 새로운 전략을 추가할 수 있다는 점입니다

따라서 요구사항이 바뀌어 추가적으로 무기가 추가될경우 Weapon을 구현한 클래스를 만들고

setWeapon() 메소드를 사용해 변경해서 사용하면 됩니다.

'DesignPattern' 카테고리의 다른 글

[Design Pattern] 템플릿메소드(Template Method)란?  (0) 2020.11.23
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Today
Yesterday
링크
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함