Notice
Recent Posts
Recent Comments
Link
«   2024/10   »
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
Tags
more
Archives
Today
Total
관리 메뉴

나의 지식 보관소

Strategy Pattern / 전략 패턴 본문

디자인 패턴

Strategy Pattern / 전략 패턴

야식은진리다 2020. 8. 14. 02:32

스트래티지 패턴은 알고리즘군을 정의하고 각각을 캡슐화하여 교환해서 사용할 수 있도록 만드는 것이다. 스트래티지를 활용하면 알고리즘을 사용하는 클라이언트와는 독립적으로 알고리즘을 변경할 수 있다.

 

는 내가 보는 책에서 나온 정의이고 쉽게 말하자면, 객체가 할 수 있는 행위들을 전략으로 만들어 놓고, 동적으로 전략을 바꿔가며 행위를 수정 할 수 있도록한 패턴이다.

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