본문 바로가기
공부/Spring

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

by JERO__ 2022. 4. 19.

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

  • 클린코드로 유명한 로버트 마틴이 5가지 원칙을 정리한 것
  1. SRP(single responsibility principle) : 단일 책임 원칙
    • 하나의 클래스는 하나의 책임
  2. OCP(Open/closed principle) : 개방-폐쇄 원칙
    • 확장에는 열려있으나 변경에는 닫힘
  3. LSP(Liskov substitution principle) : 리스코프 치환 원칙
    • 다형성에서 하위 클래스는 인터페이스 규약을 다 지켜야 한다.
    • 컴파일 성공해도 확인해야함.
      • EX) 엑셀을 밟으면 뒤로가도록 구현. (잘못됨)
  4. ISP(Interface segregation principle) : 인터페이스 분리 원칙
    • 특정 클라이언트를 위한 인터페이스 여러 개가 범용 인터페이스 하나보다 낫다.
  5. DIP(Dependency inversion principle): 의존관계 역전 원칙
    • 구현 클래스에 의존하지 않고, 인터페이스에 의존해야 한다.
      • MemberService 클라이언트가 구현 클래스를 직접 선택 (위반)
      • MemberRepository m = new MemoryMemberRepository();

 

다형성만으로는 OCP, DIP를 지킬 수 없다.

  • 스프링 기술로, OCP, DIP 지원
  • 스프링 기술
    • DI : 의존관계, 의존성 주입
    • DI 컨테이너 제공
    • 클라이언트 코드 변경없이 기능 확장
    • 쉽게 부품 교체하듯 개발

댓글