질문:
- AppConfig의 역할이 너무 광범위 하지는 않을까요?
- member service impl 에 주입하는 구체 클래스는 동적으로 runtime 시 정하는 방법도 있을까요?
깨달음:
- final 변수를 만들면 기본 할당 또는 생성자를 통해서 할당 되어야 함
- Command + E: 과거 했던 파일들 다보는 방법
=> vim: ls
[관심사의 분리]
- 공연
=> 역할의 구현을 누가 정하는가: 기획자
- 기획자
=> AppConfig
[AppConfig]
- 역할
=> 구현 생성
=> 역할에 설정
=> 기획자로서 역할을 갖는 ROLE에 맞는 구현 ACTOR를 배정함
- 역할에 설정 방법:
-- 생성자 주입
[Injection]
- Injection
=> 역할에 구체화를 부여
- DIP를 지킨다
=> 구현 클래스를 몰라도 된다.
==> 역할인 인터페이스만 의존한다.
- OCP를 지킨다
=> (closed) 역할을 사용하는 클라이언트가 구현 클래스를 의지 않해서 구현이 바뀔 때마다 수정할 필요가 없다
=> (open) 클라이언트 수정 없이 언제든지 추가 구현 클래스를 만들어서 클라이언트에 적용 할 수 있다
- Dependency Injection
=> 의존 관계 주입
==> 클라이언트가 의존하는 것을 클라이언트 외부에서 주입