Software Engineering. DI와 DIP
의존성 주입(Dependency Injection) 의존성 주입은 객체가 필요한 의존성을 내부에서 직접 생성하지 않고 외부에서 전달받는 방식이다. 별도의 DI 프레임워크나 주입 전용 객체가 반드시 필요한 것은 아니다. 생성자를 통해 객체를 전달하는 것만으로도 의존성 주입이 된다. 의존의 의미 A → B: A가 B에 의존한다. A가 동작하기 위해 B의 타입이나 기능을 사용한다면 A는 B에 의존한다. B의 공개 인터페이스가 바뀌면 A도 영향을 받을 수 있다. 다음 코드에서 Greeter는 구체 타입인 EnglishGreetingProvider를 직접 생성한다. final class EnglishGreetingProvider { func greeting() -> String { "Hello, World!" } } final class Greeter { private let provider = EnglishGreetingProvider() func greet() { print(provider.greeting()) } } 이 구조에서는 구현을 교체하거나 테스트 대역을 사용하려면 Greeter를 직접 수정해야 한다. ...