나는 가능하면 Datasource와 Delegate를 따로 분리시켜 작업을 진행했다.
이번 미션을 진행하던 중, 도무지 어떻게 분리시켜야 하는지 모르겠는 상황에 맞닥뜨렸다.
리뷰어께 고민을 말씀드렸고, 의존성
이라는 키워드를 말씀해 주셨다.
의존성
을 정확히 알지 못한 체 학습을 하고 있었다고 느껴져, 이번 기회에 차근차근 학습해보려 한다.
class Jee {
let major = "Visual Design"
}
class School {
let student = Jee()
}
let school = School()
print("Jee의 전공은 \(school.student.major) 입니다.")
Dependency Injection : DI
✅ 왜 의존성 주입을 해야하는 가?
의존성 주입을 하기 위해선, SOLID 중 하나인 DIP
를 알아야한다.
의존 관계 역전 법칙
protocol Major {
var major: String { get }
}
class Jee: Major {
let major = "Visual Design"
}
class School {
let student: Major
init (student: Major) {
self.student = student
}
}
let school = School(student: Jee())
print(school.student.major) // Visual Design
Jee
는 Major
를 상속받아, Major
에 값을 주입
School
의 내부 프로퍼티는 Major
를 가르켜, Jee의 값을 사용
Class 인 Jee와 School
은 Protocol인 Major
에 의존하고 있으며, 서로 완전 독립적인 객체가 된다.(구체타입끼리 의존하지 않음)