strategy pattern

Pattern 2008. 4. 25. 18:39

Strategy Pattern알고리즘 군을 정의하고 각각을 캡슐화하여 교환해서 사용할 수 있도록 만든다. 바뀌는 부분을 인터페이스로 분리하여 처리하고, 그 인터페이스의 구현체를 바꿈으로서 로직을 변경한다.

(if or switch문으로 분기되는 부분이 있을 때는 strategy pattern을 고려해 보고, 분기되고 속성의 변화에 의해 행동이 바뀌면 state pattern을 고려해 보면 될 것 같다. 동적으로 type code성인 iGame값이 바뀌어야 할때 이 패턴을 사용해야 겠다. 동적으로 바뀌지 않고 불변이면 상속구조도 괜찮다.)


예제) StarcraftMine게임 하는 부분

사용자 삽입 이미지

public interface IGame {

             void play();

------------------------------------------------------

public class Starcraft implements IGame {

             public void play() {

                           System.out.println("starcraft 게임중...");

             }

------------------------------------------------------

public class Mine implements IGame {

             public void play() {

                           System.out.println("지뢰찾기 게임중");

             }

------------------------------------------------------

public class PCGame {

             private IGame iGame;

             public PCGame(IGame iGame) {

                           this.iGame = iGame;

             }

             public void play() {

                           iGame.play();

             }

             public IGame getIGame() {

                           return iGame;

             }

             public void setIGame(IGame game) {

                           iGame = game;

             }

------------------------------------------------------

public class Client {

             public static void main(String[] args) {

                           PCGame pcGame = new PCGame(new Starcraft());

                           pcGame.play();    // starcraft 게임중...

                          

                           pcGame.setIGame(new Mine());

                           pcGame.play();    // 지뢰찾기 게임중

             }

Posted by 파이팅야
,