DIP (Dependency Inversion)
좋은 설계란 기본적으로 시스템에 새로운 요구사항이나 변경이 있을 때 가능한 한 영향 받는 부분을 최소화한 설계이다.
- 의존 역전 원칙
- 상위 수준의 모듈은 하위수준의 모듈에 의존 해서는 안된다.
- 의존관계를 맺을 때는, 변하기 쉬운 것 (구체적인 것) 보다는 변하기 어려운 것 (추상적인 것) 에 의존해야한다.
- DIP 를 통해 Decoupling 이 되어, 의존관계가 느슨해진다.
의존성 역전?
- 절차지향적 프로그래밍에서는 상위수준의 모듈이 하위수준의 모듈에 의존하는 경향이 있지만 이를 역전시켜, 의존하지 않도록 한다.
즉, 상위수준의 모듈과 하위수준의 모듈 사이에 추상화를 껴서 서로를 의존하는 것이 아니라 추상화 된 것을 통해서 구현을 해야한다.
swift에서는 추상화 할 부분을 protocol로 선언하고, 그 protocol을 준수하는 변수를 생성해서 주입해줄 수 있다.