인터페이스란 무엇인가?
사전적 의미 : 키보드나 디스플레이 따위처럼 사람과 컴퓨터를 연결하는 장치
두 객체 간의 연결하는 접점을 인터페이스라고 한다.
JAVA 언어에서의 인터페이스
- 기능에 대한 선언과 구현을 분리한다.
- 기능을 사용하게하는 통로를 제공한다.
- 기능 구현 시 해당 책임을 다른 객체에게 책임을 위임한다.
스트레티지 패턴이란?
여러 알고리즘에 대한 하나의 추성적인 접근점 (인터페이스) 을 만들어 접근 점에서 서로 교환 가능하는것이 가능하도록 하는 패턴
코드 구현
요구사항
- 신작 게임에서 캐릭터와 무기를 구현해보자
- 무기의 종류는 아래와 같이 두가지 종류가 존재한다.
- Knife, Sword
접근점 (인터페이스 설정)
public interface Weapon {
public void attack();
}
접근점을 구현하는 무기생성
public class Sword implements Weapon{
@Override
public void attack() {
System.out.println("Sword Attack");
}
}
public class Knife implements Weapon{
@Override
public void attack() {
System.out.println("Knife Attack");
}
}
캐릭터 생성 - 캐릭터는 무기를 고를 수 있는 접근점을 선언하고 해당 무기를 교환할 수 있어야하며 교환한 책임을 위임할 수 있어야 한다.
- 접근점
- 교환
- 위임
public class GameCharacter {
private Weapon weapon;
public void setWeapon(Weapon weapon) {
this.weapon = weapon;
}
public void attack() {
if (weapon == null) {
System.out.println("맨손 공격");
} else {
//delegation
weapon.attack();
}
}
}
호출
public class Main {
public static void main(String[] args) {
Character character = new Character();
character.setWeapon(new Sword());
character.attack();
character.setWeapon(new Knife());
character.attack();
character.setWeapon(null);
character.attack();
}
}
Code Link
https://github.com/mike6321/PURE_JAVA/tree/master/EffectiveStudy
References
'CS > DesignPattern' 카테고리의 다른 글
(DesignPattern) 프로토타입 패턴 (0) | 2020.05.04 |
---|---|
(DesignPattern) 싱글턴 패턴 (0) | 2020.05.02 |
(DesignPattern) 팩토리메서드 패턴 (0) | 2020.04.22 |
(DesignPattern) 어댑터 패턴 (0) | 2020.04.21 |
(DesignPattern) 템플릿 메서드 패턴 (0) | 2020.04.20 |