Inflearn brand logo image

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

엄엄님의 프로필 이미지
엄엄

작성한 질문수

[코드팩토리] [중급] Flutter 진짜 실전! 상태관리, 캐시관리, Code Generation, GoRouter, 인증로직 등 중수가 되기 위한 필수 스킬들!

ProductCard factory 관련 문제 질문

해결된 질문

작성

·

31

0

안녕하세요 강의 정말 유용하게 듣고 많이 배우고 있습니다. "92. Product Tab Pagination" 강의에서 코드팩토리님은 ProductCard에 factory을 2개 생성하여 강의를 진행하셨을때 가능하면 일반화 해서 사용하라고 하셔서 직접 구현하여 올바른 방향인지 질문 올립니다.

 

 

일반화한 Factory 생성자

image.png

 

IModelWithProductCard

image.png

 

각각 RestaurantModel과 ProductModel에 IModelWithProductCard을 implements한 모습

image.pngimage.png


기존에 IModelWithId을 implements한 모델(RestaurantProductModel)은 IModelWithProductCard로 대체한 대신 IModelWithProductCard에 IModelWithId을 implements 하였습니다. 코드 팩토리님 이라면 어떻게 일반화 했을지 궁금하여 직접 질문 올려드립니다.

답변 2

1

코드팩토리님의 프로필 이미지
코드팩토리
지식공유자

안녕하세요!

보여주신 코드로는 적합한지 알기 어렵습니다.

왜냐면 interface나 inheritance를 통해 코드를 재사용 가능하게 작업하는 이유는 모델의 구조보다 로직의 구현에 있어서 슈퍼클래스나 interface를 활용 할 수 있기 때문이라 생각합니다.

저같은경우 그냥 단순히 모델끼리 공유되는 프로퍼티가 있기때문에 상속을 하지는 않습니다. 어차피 공통화된 요소를 직접적으로 사용하지 않는다면 오히려 디커플링 돼있는게 좋을 수 있다고 생각하기 때문입니다.

게다가 지금 작명하신 명칭이 좀 헷갈리게 돼있어서 좋지 않은 형태라 생각됩니다.

IModelWithProductCard는 위젯인 것 처럼 이름이 지어졌는데 사실 모델의 인터페이스로 사용되고 있어서 좋지 않아보입니다.

감사합니다!

0

안녕하세요, 인프런 AI 인턴입니다.
엄엄님께서 일반화한 Factory 생성자와 관련하여 질문을 주셨군요. Factory 생성자를 일반화하는 것은 코드의 재사용성을 높이고 유지보수를 쉽게 하는 좋은 방법입니다. 특히 다양한 데이터 모델을 사용하는 앱에서는 유용하게 활용될 수 있습니다.

기본적으로, Factory를 사용하여 생성자를 구현할 때는 하나의 클래스가 아닌 여러 클래스를 대상으로 할 수 있는 방법을 찾는 것이 중요합니다. 엄엄님의 경우 IModelWithProductCard를 구현하여 RestaurantModelProductModel 클래스가 이를 implements하도록 설계한 점은 상당히 잘하신 방법입니다. 이는 공통된 속성을 가진 여러 객체를 생성할 때 중복을 줄이는 데 매우 효과적입니다.

현재 접근 방식에서는 ProductCardIModelWithProductCard를 받아서 카드 UI를 생성할 수 있도록 함으로써 두 모델 간의 차이를 축소하였습니다. 이 방법을 통해 여러 곳에서 일관되게 사용할 수 있는 ProductCard를 만들 수 있습니다.

참고할 수 있는 유사 질문

만약 추가적인 의문점이 있거나 깊이 있는 설명이 필요하시다면, 언제든지 이어서 질문해 주세요.

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

엄엄님의 프로필 이미지
엄엄

작성한 질문수

질문하기