11장 시스템
<aside>
💡 도시가 돌아가는 이유는 적절한 추상화와 모듈화 때문이다
</aside>
1 시스템 제작과 시스템 사용을 분리하라
- 제작은 사용과 아주 다르다
- 애플리케이션 객체를 제작하고 의존성을 연결하는 준비과정과 (준비 과정 이후에 이어지는) 런타임 로직은 분리되어야한다
public Service getService() {
if (service == null) {
service = new MyServiceImpl(...);
return service;
}
- 이것이 계산 지연(Lazy Evaluation)기법 : 필요한 객체를 생성하지 않으므로 불필요한 부하가 걸리지 않고 어떠한 경우에도 null 포인터를 반환하지 않는다
2 Main 분리
- 시스템 생성과 시스템 사용을 분리하는 방법 중 하나
- Main(생성과 관련된 모든 코드), 나머지(모든 객체가 생성되고 의존성 연결)