👉 ConnectionMaker 인터페이스를 만들어 줍니다.
👉 두 클래스에 implements 를 하고 makeConnection 메서드를 구현만 해주면 UserDao2에서 사용 할 수 있게 됩니다.
UserDao2 에서는 ConnectionMaker 인터페이스를 의존하고 있기 때문에 ConnectionMaker의 구현체를 사용 할 수 있습니다.
👉 ConnectionMaker를 의존하기 위해 코드를 변경 해 줍니다.
👉 이제 UserDao2의 객체를 생성 할 때 생성자를 통해 원하는 ConnectionMaker 구현체를 DI 해줘도 UserDao2의 모든 로직은 그대로 작동 합니다.