Spring SOLID 원칙

김두현·2023년 5월 17일
1

Spring

목록 보기
3/13
post-thumbnail

Clean code로 유명한 Robert Martin이 좋은 객체 설계의 5가지 원칙을 정리했다.
하나씩 알아보자.


SRP : 단일 책임 원칙

Single Responsibility Principle

하나의 클래스는 하나의 책임만 가져야한다.

"책임"은 상황에 따라 클 수도, 작을 수도 있다.
변경 시 파급 효과가 적으면, SRP를 잘 지킨 것이다.


OCP : 개방 폐쇄 원칙

Open Closed Principle

확장에는 열려있으나, 변경에는 닫혀있어야한다.

  • 기능을 확장하는데, 코드를 변경하면 안 된다고?
    • 기존 코드를 수정하지 않고 새로운 Class를 생성하여 새로운 기능을 구현한다.
      다형성을 활용한 역할과 구현의 분리를 떠올리자!

LSP : 리스코프 치환 원칙

Liskov Substitutuion Principle

객체는 프로그램의 정확성을 유지한 채 하위 객체로 바꿀 수 있어야한다.

Interface에 대한 Class는 Interface의 규약을 반드시 지켜야 함을 의미한다.

예를 들어, 자동차 엑셀의 인터페이스에는 앞으로 전진해야함이 명시된다.
만일 구현체에서 뒤로 가도록 구현한다면? ...상상만 해도 끔찍하다.


ISP : 인터페이스 분리 원칙

Interface Segragation Principle

Interface는 작고 명확하게 분리되어야 한다.

하나의 Interface에서 사용하지 않는 기능또한 구현되지 않도록, Client의 요구에 맞춰 명확하게 구현 및 분리되어야 한다.


DIP : 의존관계 역전 원칙

Dependency Inversion Principle

프로그래머는 구체화가 아닌 추상화에 의존해야한다.

즉, Class가 아닌 Interface에 의지해야한다.
같은 말로, 구현이 아닌 역할에 의지해야한다.


  • 위 내용과 Spring은 무슨 관련이 있는가?
    • Spring을 통해 OCP, DIP를 지킬 수 있게된다.

참고 자료

https://www.inflearn.com/course/스프링-핵심-원리-기본편


💕오류 지적 및 피드백은 언제든 환영입니다. 복제시 출처 남겨주세요!💕
💕좋아요와 댓글은 큰 힘이 됩니다.💕
profile
I AM WHO I AM

0개의 댓글