본문 바로가기
Programming/Java

[디자인 패턴] Strategy Pattern

by 도낙원 2017. 6. 2.
반응형

Strategy Pattern



이 패턴은 네이버 정의에 의하면


알고리즘 군을 정의하고 같은 알고리즘을 각각 하나의 클래스로 캡술화한  다음, 필요할 때 서로 교환해서 사용


이 패턴을 처음 들었을 때 새로운 건 줄 알았으나 이미 알고 있는 내용이였다.




우리가 정말 간단한 게임을 개발한다고 가정하자


그럼 캐릭터가 무기를 가지고 있을 수 있다.


그 무기의 종류로는 검, 칼, 도끼, 손, 표창 등이 될 것이다.


이때 우리는 Weapon이라는 클래스를 만들어 각 캐릭터가 상속 받아 그 무기를  사용하고 싶다.


하지만 내 캐릭터는 오직 검만 사용할 수 있는데 다른 종류의 무기도 사용할 수 있게 되어 버린다.


상속을 받게 되면 이렇게 내가 원하지 않는 것 까지 상속 받게 되고 유지 보수를 할 때 관련된


모든 코드를 변경해야하기에 너무 불편하게 된다.


그래서 변하는 부분과 변하지 않는 부분을 나눠 캡슐화 해준다


-----------code--------------


public interface Weapon {

public void attack();

}


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


Weapon 인터페이스를 만들어 오직 공격하는 정의만 만들어 놓고



---------------------------code------------------------------

public class Knife implements Weapon{


@Override

public void attack() {

// TODO Auto-generated method stub

System.out.println("칼 공격");

}

 

}

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

칼, 검, 손, 활, 표창 등 각 무기의 종류를 캡슐화하여 Weapon 인터페이스를 구현한다

그리고 새로운 무기를 추가 하고 싶을 때는 위와 같이 클래스를 추가만 해주면 된다.

각 무기는 독럽적인 존재가 되고 무기 특성에 맞게 바꿔주기만 하면 된다.





반응형
사업자 정보 표시
난길샵 | 박현숙 | 경상북도 성주군 월항면 수죽길 98길 | 사업자 등록번호 : 256-07-01668 | TEL : 010-9909-8420 | Mail : skr04@naver.com | 통신판매신고번호 : 제2020-경북성주-52호 | 사이버몰의 이용약관 바로가기

댓글