신동규

Jan 19, 2021

4 min read

[Swift 스터디] Pure DI

DI-container는 configuration을 할때에 따르는 convention이 존재하기 때문에 복잡한 application을 작성할때에 좋습니다. 만약에 application이 복잡하지 않다면, pure DI를 사용함으로써 얻을 수 있는 이점이 있습니다. Pure DI의 장점을 살펴보기 전에 container DI 에서 얻을 수 있는 단점에 대해서 먼저 살펴보도록 하겠습니다.

복잡성

컴파일러의 도움

러닝커브

Pure DI를 사용하기 위해서는 코드가 실행되어질때 dependency graph를 생성해주어야 합니다. console application에서의 간단한 예제를 봐보도록 하겠습니다.

콘솔 어플리케이션에서의 Pure DI 예제

public class Program 
{
public static void main()
{
var customLifeTime = new SomeCustomLifeTimeService();
var singleton = new SomeService(customLifeTime);
var entryPoint = new EntrypointClass(
new TransientDependency(singleton),
singleton,
new OtherTransientDependency(customLifeTime),
new SomeCustomLifeTimeService());
entryPoint.Run(); // or something similar
}
}

Pure DI는 명백하게 container DI 형식으로 작업할때보다 코드의 작업량이 많고 까다롭습니다. 하지만 Pure DI 를 활용한다면 다음과 같은 이점을 얻을 수 있습니다.

컴파일 안전성

라이프타임 설정

명시성

러닝커브

결론: Pure DI는 더 많은 코드를 쓰지만 더 명확한 코드를 작성할 수 있게 해주는 것 같다.

Born to be solo

Love podcasts or audiobooks? Learn on the go with our new app.