본문 바로가기

Spring

[Spring] 객체 지향 설계 5가지 - SOLID

단일 책임 원칙 (Single Responsibility Principle)

- "모든 클래스 단 한개의 책임을 가져야 한다"

  • 하나의 클래스가 두가지 다른 원인으로 변경되어야 한다면 두 개 이상의 책임을 가진것이므로 원칙에 어긋난다.

개방-폐쇄 원칙 (Open-Closed Principle)

- "확장에는 열려있고, 수정에는 닫혀 있어야 한다"

  • 기존의 코드의 수정(수정에 닫혀)없이 새로운 기능을 추가(확장에 열려)할 수 있게 해준다.
  • 공통되는 기능들을 인터페이스로 추상화하여 기능을 고정
  • 지키지 않을 시 기능 추가 시 마다 타입 체크 및 if문을 통한 조건이 같이 추가됨.

리스코프 치환 원칙 (Liskov Substitution Principle)

- "상위 타입의 객체를 하위 타입의 객체로 치환해도 상위 타입을 사용하는 프로그램은 정상적으로 동작해야 한다".

  • 의존성 역전 원칙을 지원

인터페이스 분리 원칙 (Interface Segregation Principle)

- "구현체 스스로가 사용하지 않는 기능에 영향받지 않아야 한다"

  • 인터페이스는 자신의 필요 기능에 대해 최소한으로 분리해야한다.
  • 인터페이스가 필요 이상의 기능으로 정의되어 있다면 구현체에 불필요한 구현이 생긴다 -> ocp 위반
  • 동일한 인터페이스의 구현체에 각각 다른 기능 구현이 필요한 경우 인터페이스를 상속하는 인터페이스를 만들어 해결

의존성 역전 원칙 (Dependency Inversion Principle)

- "구현이 직접 구현을 의존하면 안 되고, 구현은 추상을 의존하여 추상의 구현체를 주입 받아야한다"

  • 같은 추상을 상속받은 구현체라면 주입받는 클래스는 코드수정없이 교체 가능하여 변화에 유연
  • 런타임이 아닌 소스코드 작성 단계에서 의존을 역전

https://steady-coding.tistory.com/370

 

[SOLID] 단일 책임 원칙(SRP)이란?

안녕하세요? 제이온입니다. 이번 시간부터는 SOLID의 원칙 하나씩 알아보려고 합니다. 그렇다면, 이 SOLID 원칙이란 무엇일까요? SOLID 원칙 흔히 객체 지향 5대 원칙으로 불리는 이 SOLID 원칙은 SRP(단

steady-coding.tistory.com

나무위키 SOLID 정의

 

 

https://doublem.org/SOLID_SRP_OCP/

 

모든 개발자가 알아야만 하는 SOLID 원칙 - 1편 | Doublem.org

객체지향 소프트웨어 개발의 새로운 설계를 위한 SOLID 원칙

doublem.org

https://doublem.org/SOLID_LSP_ISP_DIP/

 

모든 개발자가 알아야만 하는 SOLID 원칙 - 2편 | Doublem.org

지난 글에 이어서 모든 개발자가 알아야만 하는 SOLID 원칙 (LSP/ISP/DIP)를 알아보겠습니다

doublem.org