편집 기록

편집 기록
  • 프로필 알 수 없는 사용자님의 편집
    날짜2018.06.21

    Java 에서 Interface 확장관련 질문 드립니다.(디자인 패턴)


    디자인패턴에 관한 질문인 것 같습니다 ^

    하나의 인터페이스를 여러개의 클래스가 구현하고 있는 상황에서

    특정한 하나의 클래스에서 새로운 구현체를 만들어야 할 경우 (인터페이스에 새로운 메소드 추가)

    어떻게 새로운 메소드를 추가할 것이며 다른 클래스에 영향을 주지 않도록 확장하는 방법은 무엇일까요??

    또한, 호출방식이 변경되어도 좋지만 최대한 기존 호출방식이 변경되지 않도록 할 수 는 없을까요?

    샘플코드입니다~ 굉장히 간단합니다~

    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>();
        }
    }