Spring 객체지향 원칙

OCP

Open-Closed Principle
소프트웨어 개체(클래스, 모듈, 함수 등등)는 확장에 대해 열려 있어야 하고, 수정에 대해서는 닫혀 있어야 한다.

구현 객체를 변경 할 때 클라이언트 코드(interface부)를 변경해야하면 안된다.

DIP

Dependency Inversion Principle
추상화에 의존해야지, 구체화에 의존하면 안된다.
클라이언트가 구현 클래스에 의존하지 말고, 인터페이스에 의존하도록 설계해야 한다.

MemberServiceImpl 파일

private final MemberRepository memberRepository = new MemoryMemberRepository();
  • MemoryMemberRepository()라는 구현체에 의존한다.(DIP 위배)

  • 따라서, 이 구현체를 다른 구현체로 바꿀 때 클라이언트 쪽 파일인 'MemberServiceImpl 파일'을 수정해야 한다.(OCP 위배)

해결 방법

추후 추가

좋은 웹페이지 즐겨찾기