인프런 커뮤니티 질문&답변

ksh9241님의 프로필 이미지
ksh9241

작성한 질문수

코딩으로 학습하는 GoF의 디자인 패턴

비지터 패턴 2부 - 패턴 적용하기

설계관련 궁금증이 있습니다.

작성

·

276

0

- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요!
- 먼저 유사한 질문이 있었는지 검색해보세요.
- 서로 예의를 지키며 존중하는 문화를 만들어가요.
- 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.
 

안녕하세요 선생님 이전강의에서 어떤식으로 구현할 지 간단하게 설명해준 내용을 듣고 이번 강의를 듣기전에 먼저 구현을 해본 뒤 영상을 시청한 후 차이점이 생겨서 질문 드립니다..

저는 클라이언트가 디바이스의 존재를 몰라도 사용할 수 있도록 

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 인터페이스에 새로운 메서드를 추가하고 상속받은 모든 자식클래스에
추가로 수정을 하여야 하는 단점이 생겼습니다.

클라이언트의 입장에서 디바이스의 존재를 모르고 사용할 수 있도록 하는 것과
선생님 코드처럼 확장에 용이하게 하는 방법 중 설계를 어떤부분에 중점을 둬야할지
잘 모르겠습니다..

약간 디자인패턴과 조금 거리가 있는 질문을 드려서 죄송합니다.
좋은 강의 감사합니다.

 

답변

답변을 기다리고 있는 질문이에요
첫번째 답변을 남겨보세요!
ksh9241님의 프로필 이미지
ksh9241

작성한 질문수

질문하기