SRP 단일 책임 원칙 (Single responsibility principle)
한 클래스는 하나의 책임만 가져야 한다.
중요한 기준은 변경이다 . 변경이 있을 때 파급 효과가 적으면 단일 책임 원칙을 잘 따른 것이라고 할 수 있다.
OCP 개방-폐쇄 원칙(Open/Closed principle)
소프트웨어 요소는 확장에는 열려 있으나 변경에는 닫혀 있어야 한다
이 코드에서 MemoryMemberRepository. 에서 jdbcMemberRepository로 변경할 때 클라이언트(MemberService)가 구현 클레스를 직접 선택하는데 이는 ocp 원칙을 지키지 못 한 경우이다. 이를 해결하기 위해 스프링이 도와준다.
LSP 리스코프 치환 원칙(Liskov substitution principle)
프로그램의 객체는 프로그램의 정확성을 깨뜨리지 않으면서 하위 타입의 인스턴스로 바꿀 수 있어야 한다.
즉 인터페이스에서 add 라는 것이 구현에서 sub로 동작되면 이는 LSP원칙을 위반한 것이다.
ISP 인터페이스 분리 원칙 (Interface segregation principle)
범용적인 인터페이스 보다 특정 클라이언트를 위한 인터페이스 여러개가 더 좋다는 원칙이다
즉 자동차 인터페이스와 사용자 클라이언트를 구분하면 자동차 인터페이스를 변경해도 운전자 클라이언트에 영향을 주지 않는다.
DIP 의존관계 역전 원칙(Dependency inversion principle)
구현 클래스에 의존하지 말고, 인터페이스에 의존하라는 뜻이다.
이 코드에서 DIP원칙을 위반한다 MemberService가 MemberRepository인터페이스에만 의존해야 한는데 JdbcMemberRepository에도 의존하기 때문이다.
출처 : 인프런 스프링 핵심 원리 - 기본편 김영한
'스프링' 카테고리의 다른 글
AppConfig (0) | 2023.07.06 |
---|---|
OCP, DIP 원칙이 위배되는 역할과 구현 분리 (0) | 2023.07.06 |
함수 작성 중 테스트 코드 작성하기 (0) | 2023.07.06 |
JUnit 테스트 코드 작성하기 (0) | 2023.07.05 |
객체지향의 다형성 (0) | 2023.07.04 |