Swift 기초 문법 - 36. 의존성 주입 Dependency Injection

정성윤·2023년 8월 6일
0

Swift 이론

목록 보기
38/64

의존성 주입(DI)은 소프트웨어 디자인 패턴 중 하나로, 컴포넌트 간의 의존 관계를 느슨하게 결합시키기 위해 사용되는 기법입니다.

의존성(Dependency)

하나의 클래스나 모듈이 다른 클래스나 모듈의 기능을 사용하거나 의존하는 경우 해당 클래스나 모듈은 의존성을 가지고 있습니다. 이러한 의존성은 주로 객체 생성, 데이터 처리, 외부 서비스 액세스 등의 작업을 포함할 수 있습니다.

주입(Injection)

의존성을 주입한다는 것은 외부에서 해당 의존성을 제공하여 객체 내부에 직접 생성하는 것이 아니라, 외부에서 주입된 의존성을 사용하도록 하는 것을 의미합니다.

장점
1. 테스트 용이성 : 의존성을 주입함으로써 테스트 중에 모의(mock) 객체를 주입하여 테스트 케이스를 작성하기가 용이해집니다.
2. 재사용성 : 의존성을 분리하여 코드를 재사용할 수 있고, 다른 구성 요소에서도 같은 의존성을 사용할 수 있습니다.
3. 유지 보수성 : 객체 간의 결합도가 낮아져 변경 사항이 다른 부분에 미치는 영향이 줄어듭니다.
4. 모듈성 : 코드를 더 작은 모듈로 분리하고 각 모듈 간의 의존성을 명시적으로 관리할 수 있습니다.

생성자 주입(Constructor Injection) : 객체 생성 시 의존성을 주입하는 방법

class UserManager {
    let networkService: NetworkService
    
    init(networkService: NetworkService) {
        self.networkService = networkService
    }}

메서드 주입(Method Injection) : 메서드 호출 시에 의존성을 주입하는 방법

class UserManager {
    func fetchData(using networkService: NetworkService) {
        // 사용
    }
}

속성 주입(Property Injection) : 의존성을 프로퍼티로 주입하는 방법

class UserManager {
    var networkService: NetworkService!
}

참고(출처) : 개발하는 정대리, 야곰(Swift5)

profile
이유있는 스위프트 개발자

0개의 댓글