메인 함수를 CCommand 객체로 변경하고자 합니다.
메인 함수에서 Command 인터페이스를 구현하는
BCommand 객체를 CCommand 객체로 변경하고자 합니다.
메인함수 코드에서 Command command = new BCommand(); 를
Command command = new CCommand()라고 단순히 한줄만 수정하면 될 것 같은데
그런데 굳이 이것마저 외부 설정파일로 돌리는 이유에 대해서 궁금합니다!
55글자 더 채워주세요.
1개의 답변이 있어요!
아키텍처가 복잡해지면, 레이어를 잘게 나누게 됩니다.
그런 상황에서 객체들 간의 의존성이 많이 복잡해져요,
위의 예시처럼 단순히 하나만 생성하는게 아니라 아래처럼 뎁스도 깊어질 수 있습니다.
Controller -> CommandBus -> CreateUserCommandHandler -> UserFactory -> UserRepository -> DatabaseConnection -> Config이 상황에서 직접 생성한다고 하면 Controller를 생성하기 위해 저 아래있는 Config 객체도 직접 코드에 작성해야 되는데, 그렇게 되면 너무 힘들어지죠 그래서, 생성에 대한 책임을 컨테이너한테 넘기는 겁니다.
Controller = IoCContainer.get('Controller') 이런 형태로요