(interface) interface = new (구현 obj) 인터페이스를 통해 객체를 생성한 곳에서 객체 생성 부분만 변경 해 주면 쉽게 서비스 변경이 가능 => 문제점 : 클라이언트의 코드를 수정해야 함 DIP : 인터페이스에 의존을 하고 있지만 동시에 객체를 생성하기 때문에 구현 클래스에도 의존하고 있음 OCP : 구현 클래스를 교체 해야 하는 순간 의존하는 클라이언트의 소스를 변경 해야 함 => 해결하기 위해서는 인터페이스에만 의존 하도록 해야함. 즉, 누군가 구현 클래스를 대신 생성해서 사용하는 클래스의 인터페이스에 주입 해주어야 함 관심사의 분리 인터페이스의 역할을 인터페이스가 정하는 것이 아닌 애플리케이션 단위에서 정해야 함 => AppConfig 사용 AppConfig는 구현 객체를 생..