문제점
MemberService 클라이언트가 구현 클래스를 직접 선택
MemberRepository m = new MemoryMemberRepository(); //기존코드 MemberRepository m = new JdbcMemberRepository(); //변경코드
구현 객체를 변경하려면 클라이언트 코드를 변경해야 한다.
분명 다형성을 사용했지만 OCP 원칙을 지킬 수 없다.
해결 : 객체를 생성하고, 연관관계를 맺어주는 별도의 조립, 설정자가 필요
MemberRepository m = new MemoryMemberRepository(); //DIP가 구체화에 의존
// MemberRepository라는 추상화 인터페이스에 의존하고있다.
// 하지만 MemoryMemberRepository라는 구체화에도 의존하고 있어서 DIP위반이다.