Spring/스프링 핵심 원리 - 기본편

객체 지향 설계와 스프링

한 면만 쓴 종이 2022. 8. 2. 16:46

[인프런] 스프링 핵심 원리 - 기본편

 

 

좋은 객체 지향 설계의 5가지 원칙(SOLID)

 

  1. SRP: 단일 책임 원칙(single responsibility principle)
  2. OCP: 개방-폐쇄 원칙 (Open/closed principle) ⭐
  3. LSP: 리스코프 치환 원칙 (Liskov substitution principle)
  4. ISP: 인터페이스 분리 원칙 (Interface segregation principle)
  5. DIP: 의존관계 역전 원칙 (Dependency inversion principle) ⭐

 

단일 책임 원칙 (Single responsibility principle)

  • 한 클래스는 하나의 책임만 가짐
  • 변경이 있을 때 파급 효과가 적으면 단일 원칙 책임을 잘 지킨 것

OCP 개방-패쇄 원칙 (Open/closed principle)

  • 다형성의 중요성
  • 확장에는 열려있으나 변경에는 닫혀 있어야 함
  • 이를 지키기 위해서는 설정자가 필요함

LSP 리스코프 치환 원칙 (Liskov substitution principle)

  • 객체의 정확성

ISP 인터페이스 분리 원칙 (Interface segregation principle)

  • 범용 인터페이스가 아닌 역할을 나눠 인터페이스를 분리
  • 인터페이스가 명확해지고, 대체 가능성도 높아짐

DIP 의존관계 역전 원칙 (Dependency inversion principle)

  • 추상화 즉, 인터페이스에 의존하도록 프로그래밍하는 것
  • 구현체에 의존하면 변경에 어려움이 발생

 

DI 컨테이너: 자바 객체들을 컨테이너에 넣고, 안에서 의존관계를 주입하는 것

스프링은 클라이언트 코드 변경 없이 기능 확장을 할 수 있게 함

 

 

결론

  • 역할과 구현 분리
  • 기능을 확장할 가능성이 없다면 구체 클래스, 기능 확장이 필요하면 인터페이스 부여 권장