JAVA
자바 55강. 어댑터 패턴, default
JJJAEOoni
2022. 2. 11. 16:19
반응형
package site.metacoding.practice;
// 어댑터 패턴
interface knife {
void attack();
void cook();
}
class 백종원 implements knife {
}
class 검투사 implements knife {
}
public class PattenTest {
}
백종원은 요리를 하기 위해 칼이 필요하고,
검투사는 공격을 하기 위해 칼이 필요하다.
하지만 칼의 인터페이스에는
attack( )과 cook( )이 같이 있다.
백종원은 attack( ) 메서드가 필요 없지만
백종원을 위해 인터페이스를 바꿀 수 없기 때문에
어댑터 패턴이 나왔다.
package site.metacoding.practice;
// 어댑터 패턴
interface knife {
void attack();
void cook();
}
abstract class 요리사어댑터 implements knife {
// 추상 메서드를 가질 수 있기 때문에 인터페이스 구현하지 않아도 가능
@Override
public void attack() { // attack 메서드를 구현해서 걸러내기
}
}
abstract class 싸움꾼어댑터 implements knife {
@Override
public void cook() { // cook 메서드를 구현해서 걸러내기
}
}
class 백종원 extends 요리사어댑터 {
@Override
public void cook() {
}
}
class 검투사 extends 싸움꾼어댑터 {
@Override
public void attack() {
}
}
public class PattenTest {
}
하지만 지금 자바에
새로 나온 default 문법 때문에
어댑터 패턴은 거의 사용하지 않는다.
public interface Init {
void initObject();
void initSetting();
default void initListener() {
};
}
인터페이스의 추상 메서드에
default를 붙여주면
몸체가 있는 메서드를 만들 수 있다.
default가 붙은 메서드는 강제성이 사라지게 된다.
인터페이스 Init을 구현하게 되는 클래스는
강제적으로 initObject( )와
initSetting( ) 메서드를 만들어야 하지만
initListener( ) 메서드는
필요할 때만 구현하면 된다.
[출처]
https://cafe.naver.com/metacoding
메타 코딩 유튜브
https://www.youtube.com/c/%EB%A9%94%ED%83%80%EC%BD%94%EB%94%A9
반응형