25. 인터페이스 활용 예시
인터페이스를 활용한 예제를 통해 인터페이스를 깊게 이해해보자.
25. 인터페이스 활용 예시
인터페이스 활용 예
- eomcs/java-lang/oop/ex09의 예제들을 실행하면서 활용 방법을 익혀보자.
1. e 예제 = default 메서드
- 새로 추가하는 규칙은 default 메서드로 정의하는 것이 좋음
2. f 예제 = 의존객체(dependancy)
- 의존 객체는 외부 interface를 생성자에 받아 사용함으로써 느슨한 결합을 만든다.
- BallPen 객체를 직접 받아 사용하게 되는 경우 :
다른 펜으로 변경 시 코드를 갈아치워야하는 일이 생긴다. - 이를 좀 더 느슨하게 만들기위해 BallPen이 구현한 Pen interface를 생성자에 받아 사용함으로써 코드의 유연함이 생긴다.
3. g 예제 = 다중 구현과 추상 클래스 사용
- 인터페이스를 기능에 따라 정의하여 다중 구현을 한다. Car에는 차의 기능(출발, 멈춤, 달림)을, CarchekInfo에는 차가 출발하기 전 필요한 기능 체크를 정의한다.
- 이를 추상 클래스에서 공통적으로 동작하게 되는 부분들을 구현한다.
- 그리고 이 추상 클래스를 상속받아 특정 객체가 가지는 특징 메서드를 짜면 유연한 코드가 된다.
4. h 예제
- 인터페이스 사용
- 프린터의 기능을 정의한 인터페이스를 이용해 Client에서 코드 변경이 크게 없이 다른 Print를 사용할 수 있게 만든다.
- 프린터의 기능을 정의한 인터페이스를 이용해 Client에서 코드 변경이 크게 없이 다른 Print를 사용할 수 있게 만든다.
- 인터페이스에 규칙 추가 : 상속 활용
- 새로운 규칙이 생기면서 이전에 있던 프린터와 새로 생긴 프린터의 메서드에 차이가 생겼다.
- 이를 printer2에 printer를 상속함으로써 새 프린터가 print의 기능과 새로 생긴 정의를 모두 가질 수 있게 했다.
- 하지만 이는 이전에 있던 printer는 더 이상 Client에서 사용이 불가하다는 단점이 있다.
- 기존 규격으로 제작된 객체를 사용하기 : GoF의 Adapter 설계 패턴
- Client에서 이전 printer를 사용할 수 있게하기 위해 adapter 설계 패턴을 이용한다.
- 새 기능만 어댑터에서 구현하면서 print는 기존의 객체를 통해 구현하게 되면 사용이 가능하다.
- 기존 구현체에 영향을 주지 않으면서 새 기능 명세 추가 : default 메서드
- 하지만 저러면 여러 클래스가 늘어난다. 이를 쉽게 줄여주는 메서드가 바로 default 메서드이다.
- default 메서드를 이용해 새로운 기능이 필요한 Printer에만 해당 구현을 넘길 수 있다.
5. i 예제
6. j > Exam0110 예제
- ArrayList의 조회를 위해선 get을, Stack의 조회를 위해선 pop으로 조회를 했어야한다.
하지만 Iterator라는 인터페이스를 통해 조회 명령어를 통일화 시킬 수 있다.
7. j > Exam0120 예제
ex09 > g, h는 그림을 그려가며 확인하자
이 기사는 저작권자의 CC BY 4.0 라이센스를 따릅니다.