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("칼 공격");
}
}
'Programming > Java' 카테고리의 다른 글
[기초] 자바 쉬운 프로젝트 #1 (1) | 2018.04.13 |
---|---|
[자바 기본] 컬렉션 프레임워크(List / Set / Map) Ⅲ (0) | 2017.08.22 |
[자바 기본] 스택과 큐(Stack and Queue) (0) | 2017.08.18 |
[자바 기본] 컬렉션 프레임워크(List / Set / Map) Ⅱ (0) | 2017.08.18 |
[자바 기본] 컬렉션 프레임워크(List / Set / Map) Ⅰ (0) | 2017.08.17 |
댓글