스프링

좋은 객체 지향의 설계 SOLID

salmon16 2023. 7. 4. 17:18

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