Coding/언어-JAVA

JAVA 인터페이스, 다형성 실습 #Day4

꿀딴지- 2023. 8. 3. 19:03
요구사항
Computer와 LGMonitor, SamsungMonitor를 연결하여 입력한 문자열을 모니터에 출력시키는 기능을 구현합니다.
다른 모니터로 교체할 때 최소한의 수정만으로 모니터를 교체할 수 있도록 코드를 구현해야 합니다.

요구사항 자체는 어렵지 않다. LG나 삼성 모니터에 연결한다음 연결값에 따라 Print(해상도), Setting(각 브랜드별 고유세팅)을 설정하게끔 제공하면 된다.

Monitor라는 상위 클래스를 만들고 LG/삼성 고유기능을 만들면 되겠다고 생각했다. -> 이상황에서는 Monitor나 MonitorInterface나 역할이 거의 비슷함.

 

Reference코드는 좀더 복잡하게 되어있고, 고민되는 포인트 들이 있어서 그 부분에 대해서만 포스팅해본다.

 

<Reference 코드 참고>

 ref코드를 보니 학습을 위해서겠지만 복잡하게 사용되었다.

특히 동일한 모니터임에도 1개의 클래스에서 implement하는 인터페이스가 달라지며 각각 인스턴스가 생성되는 상황이 되었다.

인터페이스가 상위이다 보니 하위클래스 메서드까지 포함할 수 없어서 이 자체로는 해결 못하고
1) Configure Interface를 삭제하고 Display Interface로 일원화(Monitor에서 abstract 메소드)
2) Configure 클래스를 만들어서 monitor.setting으로 호출 - 이때 모니터 자료형이 Display이므로 다운캐스팅 수행

이렇게 2가지 정도로 고민해보았다.

extends와 implement가 사방에 쓰이며……..점점 복잡해지는데(…)

실제 구현에서는 얼마나 복잡해질지..ㅎ..