🔥[새 기능 안내] 로드맵 기능 오픈
객체 지향 프로그래밍 입문

객체 지향 프로그래밍 입문

(18개의 수강평)

351명의 수강생

19,800원

최범균
평생
입문
수료증
11개 수업, 총 2시간 27분
위시리스트 추가
유아밍 프로필

연습에 대한 구체적인 코드가 맞는지 리뷰 부탁드려도 될까요 :)? 유아밍 11달 전

안녕하세요.

DIP까지 다 듣게 되었습니다. 좋은 강의를 이렇게 올려주셔서 너무 감사합니다. 다만, 마지막 연습에 대한 구체적인 코드가 없어서 작성하게 되었습니다:)

제가 작성한 코드가 제대로 이해한게 맞는지 확인 부탁드려도 될까요?

// 고수준 모듈

class ProductDataService {

private var productRepository: ProductRepository?

private var productRecommander: ProductRecommander?

private var popularProductService: PopularProductService?

// 직접 생성x

// init() {

// self.productRepository = DBProductRepository()

// self.productRecommander = DaaraRecommnder()

// self.popularProductService = ErpPopularProductService()

// }

init(_ productRepository: ProductRepository, _ productRecommander: ProductRecommander, _ popularProductService: PopularProductService) {

self.productRepository = productRepository

self.productRecommander = productRecommander

self.popularProductService = popularProductService

}

func getDetailInfo() {

productRepository?.fetchDetailInfo()

}

func recommandItem() {

productRecommander?.fetchItems()

}

func getTopItem() {

popularProductService?.fetchTopItem()

}

}

// 하위 기능을 추상화한 타입 1

protocol ProductRepository {

func fetchDetailInfo()

}

// 하위 기능을 추상화한 타입 2

protocol ProductRecommander {

func fetchItems()

}

// 하위 기능을 추상화한 타입 3

protocol PopularProductService {

func fetchTopItem()

}

// 저수준 모듈

class DBProductRepository: ProductRepository {

func fetchDetailInfo() {

// ...

}

}

class DaaraRecommnder: ProductRecommander {

func fetchItems() {

// ...

}

}

class ErpPopularProductService: PopularProductService {

func fetchTopItem() {

// ...

}

}

3