inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

얄코의 떠먹여주는 객체지향 디자인 패턴

SOLID 원칙

DIP 질문

해결된 질문

130

his130

작성한 질문수 3

0

DIP 예제 코드에서 질문이 있습니다.

Switchable 이라는 interface를 객체로 Switch가 갖게되는데요.

구조가 이렇게 바뀌어도

Fan의 turnOn 함수에 예를 들어 매개변수가 들어가게 되면 (Overloading)

Switch 클래스에도 영향이 가지 않나요?

switch class의 tunrOn함수의 device.turnOn() 함수도 바뀌어야 하니까요..?

java 객체지향 디자인-패턴

답변 2

0

얄팍한 코딩사전

안녕하세요, his130님.
만약 Fan을 실행하기 위해, 아얘 매개변수까지 넣을 정도의 변화가 생기는 상황이라면
애초에 Switchable 인터페이스를 사용하면 안 될 것입니다. 그땐 완전히 다른 설계가 필요하죠.
(현실에서 켜고 끄는 기능에 다른 뭔가 변수를 집어넣는 기기는 없죠.)
DIP는 말씀하신 상황을 위한 설계가 아닙니다.
지금 가정한 상황은, 온오프 기능이 있는 스위치 하나로 그 스위치가 적용되는 모든 기기를 끄고 켤 수 있도록 하는 것입니다. 그 스위치로 선풍기 뿐 아니라 전등, 제습기 등등을 모두 사용할 수 있게 하기 위해 스위처블 인터페이스를 사용하는 것이라고 생각하시면 되겠습니다. 즉, 켜고 끄기만 하면 되는 기기들 말이죠.

정리하자면 같은 기기에 기능이 바뀔 때가 아니라, 같은 기능의 새 기기가 추가될 때를 위한 설계인겁니다.

0

인프런 AI 인턴

안녕하세요, 인프런 AI 인턴입니다. his130님!

DIP(Domain Interface Principle) 관련 질문을 해주셨군요. DIP는 고수준 모듈이 저수준 모듈에 의존하기보다는 추상화에 의존하도록 하는 설계 원칙입니다. 여기서 Switchable 인터페이스는 추상화 요소로, 다양한 객체가 이 인터페이스를 구현할 수 있게끔 합니다.

질문해주신 대로, 만약 Fan 클래스의 turnOn 메서드가 오버로딩되어 매개변수를 추가하게 된다면, Switch 클래스의 turnOn 메서드에도 간접적인 영향이 갈 수 있습니다. 이때 device.turnOn()Fan의 특정한 오버로딩된 메서드를 호출하도록 수정할 필요가 있을 겁니다.

하지만 DIP 원칙을 잘 지킨다면, Switch 클래스의 코드를 직접 수정하지 않고도 이를 해결할 수 있는 설계를 고려해야 합니다. 예를 들어, 전략 패턴(Strategy Pattern)을 활용해 Switch 클래스를 수정하지 않고도 오버로드된 메서드를 호출할 수 있는 방법을 생각해 볼 수 있습니다.

혹시 얄코의 강의 내 DIP나 관련된 질문이 있으시다면, 강의 내 질문 게시판에서 DIP와 관련된 예제나 질문의 답변들을 참고하실 수도 있습니다.

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

문제 리스트 페이지

0

11

1

part8 Notion 링크

0

10

1

채점 사이트 관련 질문드립니다

0

13

1

인텔리제이 MCP 서버 설정 관련

0

16

1

조회속도 개선에서 더 개선하는 방법이 궁금합니다.

0

21

2

필기자료 사라졌나요?(실기 일주일만에 안돼서 재도전-_-)

0

30

2

질문있습니다

0

22

1

1번 문제 질문입니다.

0

28

1

26년 1회 실기 해설 강의

0

48

2

음악플레이어 문제 중 코드질문

0

23

1

잠겨버린 사물함 시간초과 관련 질문입니다.

0

24

1

도메인 모델에서 관계와 규칙을 구분하는 방법

0

36

2

프로젝트 질문 문의

0

42

1

문제와 풀이4 문제점

0

39

2

DDD 는 마이바티스와 잘 맞지 않는건가요?

0

44

1

강의 순서에 대한 궁금증

0

71

2

3-layer 에서의 파사드 패턴적용

0

80

2

파사드 패턴과 템플릿 메서드 패턴의 차이

0

122

2

강의 전부 수강했는데 퀴즈 활성화가 안되는 것 같습니다.

0

111

1

수정 요청

-18

212

5

안녕하세요.

0

129

1

질문이있습니다.

0

112

1

빌더패턴 질문있습니다!

0

236

1

파사드 패턴에 대해 질문이 있습니다.

0

439

3