Advanced iOS App Architecture - Ch4: Object & Their Dependencies (적용 부분)
On-demand approach
- 필요한 의존성을 파악하고 다 넣어주어야 하기 때문에 복잡한 앱의 경우 초기화 메서드가 매우 길어짐
- Long-lived 의존성을 하위에서 접근하기 위해 전역으로 선언하는 문제가 존재
Factories approach
Factory 클래스에서 필요한 의존성을 만들어내는 팩토리 메서드를 가지고 있음.
이 팩토리 메서드의 반환 타입은 프로토콜로써 이를 통해 실제 구현 타입을 숨길 수 있음. 이는 Testability와 Flexibility를 높이는 결과를 가져옴.
- Factory 클래스는 stateless하고 long-lived 의존성이 어디에 잡혀 있어야 할 지 모르기 때문에 Factories 메서드에서 이것을 인자로 전달해주어야 한다.
- On-demand 접근법과 마찬가지로 long-lived 의존성을 유지하기 위해 ‘전역’으로 관리해야 하는 위험 요소가 있다.
Single-container approach
- Long-lived 의존성을 state로 관리하여 init 메서드에서 인자를 사용하지 않아도 된다.
- App Delegate에서 하나의 Container 클래스를 생성하고 프로퍼티로 소유한다.
Container hierarchy approach
- Scope를 두어 특정 의존성이 굳이 Optional로 관리되지 않게 한다.
- 부모 Container의 의존성을 통해 자식 Container에서 필요한 의존성을 init 메서드에서 받아올 수 있다.
Reference
- Advanced iOS App Architecture