팩토리 패턴의 의존성 주입과 관련해서 질문이 있습니다!
686
1 câu hỏi đã được viết
강의 교재에서 "CoffeeFactory라는 상위 클래스가 중요한 뼈대를 결정하고 하위 클래스인 LatteFactory가 구체적인 내용을 결정하고 있습니다. 참고로 이는 의존성 주입이라고도 볼 수 있습니다. CoffeeFactory에서 LatteFactory의 인스턴스를 생성하는 것이 아닌 LatteFactory에서 생성한 인스턴스를 CoffeeFactory에 주입하고 있기 때문이죠."
위 문장에 대해 두 가지 의문점이 있습니다.
CoffeeFactory 클래스와 LatteFactory가 상속 관계를 가진 상위/하위 클래스인가?
CoffeeFactory는 그저 LatteFactory, EspressoFactory를 호출하는 역할의 클래스이고 extends를 통해 상속을 하고 있지 않다고 생각하는데 이 부분이 왜 상속 관계에 있는 것인지 이해가 안갔습니다.
LatteFactory에서 생성한 인스턴스를 CoffeeFactory에 주입하고 있다?
해당 예시에서 의존성 주입은 의존성 주입자의 역할을 하고있는 CoffeeFactory 클래스가 main 함수와 하위 클래스(LatteFactory, EspressoFactory)와의 의존성을 느슨하게 만들고, 하위 클래스가 CoffeeFactory 클래스에 의존하게 만들면서 달성된다고 생각했습니다. 그런데 LatteFactory에서 생성한 인스턴스를 CoffeeFactory에 주입하기 때문에 의존성 주입이 달성된다는 문장이 이해가 안 갔습니다.
+static 메서드를 사용하고 있기 때문에 인스턴스를 생성하지 않는 것으로 보이는데 '인스턴스'를 주입하고 있다는 문장도 잘 이해가 가지 않습니다.
긴 질문 읽어주셔서 감사합니다! 답변 기다리겠습니다 :)
Câu trả lời 1
1
안녕하세요 here님 ㅎㅎ
CoffeeFactory 클래스와 LatteFactory가 상속 관계를 가진 상위/하위 클래스인가?
CoffeeFactory는 그저 LatteFactory, EspressoFactory를 호출하는 역할의 클래스이고 extends를 통해 상속을 하고 있지 않다고 생각하는데 이 부분이 왜 상속 관계에 있는 것인지 이해가 안갔습니다.
>> 음 혹시 자바스크립트 코드를 보고 질문하시는 건가요? 저 자바스크립트 코드 같은 경우 ES6에서 처음으로 extends가 나왔지만 저 코드를 만들 당시 ES6 - extends 키워드를 쓰지 않고 간단히 상속관계를 만들고자 한 코드입니다. 자바코드를 참고해주세요. 자바 코드를 보면 extends를 쓰며 상속을 하고 있습니다.
https://github.com/wnghdcjfe/csnote/blob/main/ch1/6.java
다만 자바스크립트 코드 같은 경우 extends를 해야 정확히 상속관계다 라고 볼 수 있기 때문에 이는 수정했습니다. 감사합니다.
LatteFactory에서 생성한 인스턴스를 CoffeeFactory에 주입하기 때문에 의존성 주입이 달성된다는 문장이 이해가 안 갔습니다.
>> 이부분 말씀하시는 것 맞나요?
const coffee = CoffeeFactory.createCoffee("LatteFactory") 원래는 LatteFactory에 관한 인스턴스를 만들어서 createCoffee 메서드 매겨변수로 넣어야 한다는 말씀이시죠. 아마 제 생각에는 클래스를 기반으로 객체를 만들어 매개변수를 넣는 것이 옳다. 라고 말씀하시는 것 같은데요.
문자열을 매개변수로 넣는 것 또한 인스턴스 삽입이라고 볼 수 있습니다. 문자열은 다음과 같이 string이라는 클래스에서 나오는 인스턴스입니다. new String하고도 선언할 수 있지만 그냥 문자열로 선언도 가능하죠. (다만 좀 간단히 만든 거에요.. ㅎㅎ )
const string4 = new String("A String object");here님께서 생각하신 코드는 아마 다음과 같을 거 같은데요. 다음 코드는 다음 강의 의존성 주입에 나오는 코드이며 다음과 같이 클래스를 기반 > 인스턴스를 주입해서 의존성주입을 만들고 있습니다.
Project a = new Project(new BackendDeveloper(), new FrontEndDeveloper());또 질문 있으시면 언제든지 질문 부탁드립니다.
감사합니다.
강사 큰돌 올림.
DI 관련 질문입니다
0
268
1
안녕하세요 선생님, API 실습 2 강의를 듣다 궁금한 점이 생겨 질문 드립니다.
0
535
2
JSON으로 사이트맵
0
487
1
브라우저 렌더링 부분 교재 관련 질문입니다!
0
460
2
교제를 따로 사야하나요?
0
1962
1
클라우드 아키텍쳐에서 토폴로지 설계
1
704
1
로컬스토리지, 세션 스토리지 용량 초과하면 어떻게 되나요?
0
1540
1
학습 순서가 정해져있는건지 궁금합니다.
0
510
1
TCP/IP 4계층, OSI 7계층에 대해 질문드립니다.
0
955
1
서브넷마스크 할당 퀴즈가 헷갈립니다
1
466
1
Linked List의 시간 복잡도에 대한 질문입니다
0
478
1
HTTP 메서드 #1. 질문있습니다.
0
508
1
jwt 토큰
0
746
1
해당 질문에 대한 답변 예시 중에 제가 본 것 중 제일 고품질이네요
0
426
2
UDP의 고정길이에 대하여 질문이 있습니다.
0
309
1
질문 잇워오
0
381
1
안녕하세요 axios DIP 사례의 화살표가 잘 이해가 되지 않아 질문드립니다
0
304
1
동적배열 질문있어요
0
235
1
책과 강의 교안.. 어떤 것에 비중을 두어야 하나요?
0
488
1
HTTP3 UDP통신
0
970
1
[오탈자 문의]
0
258
1
attribute, field, property의 명확한 차이점이 궁금합니다.
1
1407
1
싱글톤 패턴에서 정적 멤버 방식과 정적 블록 방에서 정적 블록 방식은 final이 없는 이유
0
332
1
Json이 프로그래밍 언어와 플랫폼에 독립적인 이유가 뭔가요?
0
429
1

