디자인패턴에 관한 질문인 것 같습니다 ^
하나의 인터페이스를 여러개의 클래스가 구현하고 있는 상황에서
특정한 하나의 클래스에서 새로운 구현체를 만들어야 할 경우 (인터페이스에 새로운 메소드 추가)
어떻게 새로운 메소드를 추가할 것이며 다른 클래스에 영향을 주지 않도록 확장하는 방법은 무엇일까요??
또한, 호출방식이 변경되어도 좋지만 최대한 기존 호출방식이 변경되지 않도록 할 수 는 없을까요?
샘플코드입니다~ 굉장히 간단합니다~
public interface Phone {
public void call();
}
public class LG implements Phone {
@Override
public void call(){
System.out.println("calling...");
}
}
public class Apple implements Phone {
@Override
public void call(){
System.out.println("calling...");
}
}
public interface Dmb {
public List<String> channels();
}
굉장히 간단한 코드입니다.
LG 의 경우 DMB 가 존재하며, Apple 의 경우 DMB가 없다고 가정하겠습니다~
여기서 DMB라는기능을 LG에 포함시켜야 하는데 이 경우 어떤식으로 작업하는지가 궁금합니다.
기존의 호출방식입니다.
Phone phone = new Apple();
phone.call();
좀 더 나아가 LG class에서 다음과 같이 작업했다고 할 경우에 해당 메소드를 어떤식으로 호출하는지도 궁금합니다.
public class LG implements Phone, Dmb {
@Override
public void call(){
System.out.println("calling...");
}
@Override
public List<String> channels(){
return new ArrayList<String>();
}
}