- 의존성 주입
- DI 라고도 하면 객체 지향 프로그램을 할 때는 빼 놓을 수 없는 중요한 부분입니다.
- 복잡한 개발을 하면 할 수록 의존성이 생길 수 있습니다.
class User {
var game = Game()
func startGame() {
self.game.start()
}
}
위 코드에서 User와 Game 사이 결합도가 증가하고 의존성이 생깁니다.
- Game을 바꾸면 Game과 startGame의 결합된 모든 것을 바꾸어야함
- 코드의 재사용성이 떨어짐
- 이게 DIP 의존성 역전 법칙의 위배됩니다.
- DIP를 위배하지 않으려면 의존 시 클래스 보다는 인터페이스 혹은 추상 클래스와 관계를 맺어야합니다.
- 코드의 재사용성이 높아집니다
- 테스트가 편리해집니다.
- 코드의 유연성이 크게 증가합니다.
- 코드 분성 및 파악 용이