(실습)객체지향 설계 원칙를 지키면서 설계하기
·
Spring Framework
먼저 레거시입니다. 클라이언트 클래스가 MemberRepository라는 인터페이스뿐만 아니라 MemoryMemberRepository라는 구체 클래스에도 의존하고 있다. ​ 그래서 DIP, OCP를 위반하고 있다. ​ 이해를 안갈 수 있으니 예를 들어보자. 만약 구체(구현) 클래스가 JpaRepository로 바뀌었다. 그러면 클라이언트 클래스 (MemberServiceImpl) 에서 new JpaRepository로 변경할 것이다. ​ 의존관계에서 구체 클래스를 의존하고 있어 DIP를 위반하고 있다. 그리고 만약 구체 클래스를 변경하려면 클라이언트 클래스를 직접 수정해야 하므로 OCP를 위반한다. ​ ​ ​ 문제를 해결하는 방법이다. 인터페이스에만 의존하는 방법으로 생성자를 통해 구현 객체를 주입(D..