설계관련 궁금증이 있습니다.
216
작성한 질문수 8
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();
Shape triangle = new Triangle();
rectangle.printToPhone();
rectangle.printToWatch();
triangle.printToPhone();
triangle.printToWatch();
요런식으로 처리하였습니다.
이후 강의를 듣고난 뒤 새로운 디바이스가 생성될 때마다 수정해야 할 클래스가
훨씬 많아진다는 단점이 있다는걸 인지했지만 클라이언트 입장에선 디바이스의 존재를 몰라도
사용할 수 있는 장점이 있는데 이걸 어떤 기준으로 트레이드오프 해야할 지 여쭤보고 싶습니다.
좋은 강의 감사합니다.
답변 1
0
음.. "클라이언트가 디바이스의 존재를 몰라"라는 부분이 핵심인것 같은데요. 과연... 모르는게 맞나요? printPhone() printWatch()라는 메서드를 클라이언트 입장에서 선택하는 순간.. 구체적으로 Phone이나 Watch라는 클래스를 참조하는 건 아니지만 이미 어떤 디바이스를 쓸지 클라이언트는 알고 있는 것 아닐까요?
설계를 변경할 때 (즉 어떤 새로운 디바이스를 추가한다거나.. 디바이스가 바뀐다거나..) 코드의 변경이 적고, 쉽다면 잘 설계했다고 말할 수 있곘죠. 예를 들어 변경해 보면서 어떤 변경이 생기는지 직접 경험하다보면 적절한 방법을 찾으실 수 있을 것 같습니다.
많이 사용되는 패턴의 순서를 정한다면 어떤 순서일까요?
0
134
1
@Builder에 대해 사소한 질문
0
68
1
default 기능이 있는 interface와 추상클래스의 차이
0
63
1
실무 코드에 디자인 패턴 적용 시의 '기준'에 대해 조언을 얻고 싶습니다.
0
56
1
데코레이터 패턴, before 가 O(2^n) 인 이유
0
57
0
혹시 다음강의는 언제쯤..
0
356
1
volatile 사용 이유에 대해서 여쭤보고 싶습니다!
0
649
3
Spring Security 의 ProviderManager (AuthenticationManager) 도 옵저버 패턴을 사용하고 있다고 볼 수 있을까요?
0
402
2
싱글톤 패턴을 깨트리는 방법
0
562
1
코드에 약간 오타가 있는거 같습니다.
0
444
1
싱글톤 (Singleton) 패턴 구현 방법 3 - 2번 퀴즈에 대해 질문이 있습니다.
0
577
2
안녕하세요, 강의 순서 질문드립니다.
0
691
1
스프링 시큐리티 WebSecurityConfigurerAdapter deprecated 대체 코드
0
2436
1
팩토리메소드 = 추상팩토리?
2
926
1
중재자 패턴에 관하여~
0
515
1
undo 메소드 작업중에서
1
375
1
익명클래스로 객체 생성시 의문점
0
598
1
mediator패턴에서 객체끼리 순환참조는 어떻게 해결해야할까요
0
488
1
객체간에 this를 넘기는 부분에 관련해 질문이 있습니다..
1
374
1
전략 패턴과 상태 패턴에 관련해서 질문이 있습니다.
0
291
1
플라이웨이트 패턴 3부에서 HashMap 동시성 질문입니다.
0
264
1
enum 이 이른 초기화 방법이 아니라는 것은,
0
510
1
해당 코드가 C# 에선 접근 관련 컴파일 에러가 뜹니다.
0
439
1
설계관련 궁금증이 있습니다.
0
331
0





