티스토리 뷰

장점

테스트에 용이

종속성, 결합도 감소

유연성, 확장성 증가

의존관계 설정 가능

의존성

class SomeController {
    
    var fooManager = FooManager()
}

SomeController는 FooManager 클래스에 의존관계가 생깁니다.

의존성 주입하는 방법이 3가지를 소개합니다.

Initializer Injection

class SomeController {
    
    var fooManager: FooManager
    
    init(fooManager: FooManager) {
        self.fooManager = fooManager
    }
}


let manager = FooManager()
var someController = SomeController(fooManager: manager)

Property Injection

class SomeController {
    
    var fooManager: FooManager?
}

let manager = FooManager()

var someController = SomeController()
someController.fooManager = manager

Method Injection

class SomeController {
    
    var fooManager: FooManager?
    
    func fooManager(using manager: FooManager) {
        self.fooManager = manager
    }
}

var someController = SomeController()
someController.fooManager(using: FooManager())

인수를 취하는 것이 DI의 핵심 개념입니다.

참고

https://theswiftdev.com/swift-dependency-injection-design-pattern/

https://medium.com/@jang.wangsu/di-dependency-injection-이란-1b12fdefec4f

댓글
공지사항