Java/Design Pattern
[디자인 패턴] Strategy Pattern(전략 패턴, 스트레티지 패턴)
hyerann
2020. 7. 20. 22:32
Strategy Pattern
전략 바꾸기
학습 목표
- 인터페이스 개념을 이해한다.
- 델리게이트 개념을 이해한다.
- 전략 패턴 개념을 이해한다.
인터페이스
키보드나 디스플레이 따위처럼 사람과 컴퓨터를 연결하는 장치
- 기능에 대한 선언과 구현 분리
- 기능을 사용 통로
델리게이트
- 위임하다
스트레티지 패턴
- 여러 알고리즘을 하나의 추상적인 접근점을 만들어 접근 점에서 서로 교환 가능하도록 하는 패턴
기본 설계
요구 사항
- 신작 게임에서 캐릭터와 무기를 구현해보세요.
- 무기는 두 가지 종류가 있습니다.
- 칼
- 검
유지 보수 요청
- 무기 중에 도끼를 추가해주세요
Class Diagram
Weapon.class
public interface Weapon {
public void attack();
}
Knife.class
public class Knife implements Weapon {
@Override
public void attack() {
System.out.println("칼 공격");
}
}
Sword.class
public class Sword implements Weapon {
@Override
public void attack() {
System.out.println("검 공격");
}
}
Ax.class
public class Ax implements Weapon {
@Override
public void attack() {
System.out.println("도끼 공격");
}
}
GameCharacter.class
public class GameCharacter {
//접근점
private Weapon weapon;
//교환 가능
public void setWeapon(Weapon weapon) {
this.weapon = weapon;
}
public void attack() {
if (weapon == null) {
System.out.println("맨손 공격");
} else {
//델리게이트
weapon.attack();
}
}
}
Main.class
public class Main {
public static void main(String[] args) {
GameCharacter character = new GameCharacter();
character.attack();
character.setWeapon(new Knife());
character.attack();
character.setWeapon(new Sword());
character.attack();
character.setWeapon(new Ax());
character.attack();
}
}