요구사항
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가 사방에 쓰이며……..점점 복잡해지는데(…)
실제 구현에서는 얼마나 복잡해질지..ㅎ..
'Coding > 언어-JAVA' 카테고리의 다른 글
JAVA Collection Framework 1/2 #Day5 (0) | 2023.08.07 |
---|---|
JAVA 클래스, 메서드 구성 형태 (0) | 2023.08.05 |
JAVA 인터페이스 #Day4 (0) | 2023.08.03 |
JAVA : 상속, 캡슐화, 다형성, 추상화 #Day3 (0) | 2023.08.02 |
JAVA 클래스, 객체 #Day2 (0) | 2023.08.01 |