
인터페이스란 무엇인가?
사전적 의미 : 키보드나 디스플레이 따위처럼 사람과 컴퓨터를 연결하는 장치
두 객체 간의 연결하는 접점을 인터페이스라고 한다.
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
mike6321/PURE_JAVA
Contribute to mike6321/PURE_JAVA development by creating an account on GitHub.
github.com
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 | 
 
										
									 
										
									 
										
									