작성
·
276
0
안녕하세요 선생님 이전강의에서 어떤식으로 구현할 지 간단하게 설명해준 내용을 듣고 이번 강의를 듣기전에 먼저 구현을 해본 뒤 영상을 시청한 후 차이점이 생겨서 질문 드립니다..
저는 클라이언트가 디바이스의 존재를 몰라도 사용할 수 있도록
Shape 인터페이스에
void printToPhone();
void printToWatch();
두 메서드를 생성한 뒤 각 도형 자식클래스에
@Override
public void printToPhone() {
device = new Phone();
device.printTo(this);
}
@Override
public void printToWatch() {
device = new Watch();
device.printTo(this);
}
이런식으로 메서드 내부에서 디바이스를 생성하여 처리하였습니다.
이후 클라이언트에서
Shape rectangle = new Rectangle();
rectangle.printToPhone();
rectangle.printToWatch();
이런식으로 호출하는 방법으로 설계를 진행하였는데
강의를 듣다보니 디바이스가 새로 추가될 때마다 선생님의 코드와는 다르게
Shape 인터페이스에 새로운 메서드를 추가하고 상속받은 모든 자식클래스에
추가로 수정을 하여야 하는 단점이 생겼습니다.
클라이언트의 입장에서 디바이스의 존재를 모르고 사용할 수 있도록 하는 것과
선생님 코드처럼 확장에 용이하게 하는 방법 중 설계를 어떤부분에 중점을 둬야할지
잘 모르겠습니다..
약간 디자인패턴과 조금 거리가 있는 질문을 드려서 죄송합니다.
좋은 강의 감사합니다.
답변