인터페이스 : 키보드나 디스플레이 처럼 사람과 컴퓨터를 연결하는 장치
-> 두 객체를 연결해주는 접점 같은 장치
자바에서의 인터페이스 : 기능에 대한 선언과 구현 분리 , 기능을 사용하는 통로로 사용 할 수 있다.
기능에 대한 선언과 구현을 분리 할 수 있는 기능을 제공한다.
어떠한 기능을 호출할 수 있는 통로가 된다.
인터페이스의 사용은 보통 다음과 같습니다.
1
2
3
4
5
6
7 |
package Strategy;
public interface Ainterface {
public void funcA();//기능을 선언한다.
}
|
cs |
1
2
3
4
5
6
7
8
9
10
11 |
package Strategy;
public class AinterfaceImpl implements Ainterface{
@Override
public void funcA() {//기능을 구현한다.
System.out.println("AAA");
// TODO Auto-generated method stub
}
} |
cs |
1
2
3
4
5
6
7
8 |
package Strategy;
public class Main {
public static void main(String[] args) {
Ainterface ainterface = new AinterfaceImpl();
ainterface.funcA();//ainterface는 funcA를 사용하는 통로가 된다.
}
} |
cs |
델리게이트 개념
델리게이트 = 위임하다.
두 객체 간의 관계에서 델리게이트 한다고 한다.
특정 객체의 기능을 사용하기 위해서 다른 객체의 기능을 호출하는 것.
다음 코드를 보자.
1
2
3
4
5
6 |
package Strategy;
public interface Ainterface {
public void funcA();//기능을 선언한다.
} |
cs |
1
2
3
4
5
6
7
8
9
10
11 |
package Strategy;
public class AinterfaceImpl implements Ainterface{
@Override
public void funcA() {//기능을 구현한다.
System.out.println("AAA");
// TODO Auto-generated method stub
}
} |
cs |
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 |
package Strategy;
public class AObj {
Ainterface ainterface;//funcA에 대해 필요한 기능이 Ainterface에 있다고 하자.
public AObj() {
ainterface = new AinterfaceImpl();
}
public void funcAA() {
ainterface.funcA();//System.out.println("AAA);와 같은 기능을 한다.
ainterface.funcA();//System.out.println("AAA);와 같은 기능을 한다.
// System.out.println("AAA"); //이렇게 기능을 직접 명시하지 않는다.
// System.out.println("AAA");
//델리게이트의 개념
//funcAA 메소드의 몸체 부분에 ~~ 기능이 필요하다. 개발해달라. 라는 내용을 명시한다.
//즉, 호출을 진행한다. }
} |
다시 델리게이트의 정의를 보자.
소스코드에서는 특정객체 AinterfaceImpl 의 기능을 사용하기 위해서 다른객체 Ainterface를 호출했다.
1
2
3
4
5
6
7
8
9
10
11 |
package Strategy;
public class Main {
public static void main(String[] args) {
Ainterface ainterface = new AinterfaceImpl();
ainterface.funcA();//ainterface는 funcA를 사용하는 통로가 된다.
AObj name = new AObj();
name.funcAA();//델리게이트 개념을 적용하고 메인에서 함수 호출
}
} |
cs |
Strategy 패턴의 개념
여러가지 알고리즘을 하나의 추상적인 접근점(인터페이스)를 만들어 서로 교환 가능하도록 하는 패턴
Strategy 패턴의 기본 설계
Strategy 패턴 연습문제
요구 사항
신작 게임에서 캐릭터와 무기를 구현해보세요.
무기는 두 가지 종류가 있습니다. : 칼 , 검
캐릭터는 무기를 칼도 쓸 수 있고 검도 쓸 수 있습니다.
더보기를 클릭하시면 코드를 보실 수 있습니다.
추가된 요구사항
무기 중에 도끼를 추가해주세요.
●코드 구조
'Java 강의' 카테고리의 다른 글
반복문으로 *을 출력하는 예제 (0) | 2017.09.26 |
---|---|
자바 제어문 조건문 선택문 반복문 / if else if / switch case / for , while (0) | 2017.09.25 |
자바 상속 / java inheritence (0) | 2017.09.23 |
자바 배열 / 객체 배열 선언 / java array / java object array (0) | 2017.09.21 |
Java 프로그래밍 기초 (0) | 2017.09.20 |
댓글