Backend/Spring

객체지향원칙 5가지

HJ39 2024. 1. 4. 00:50

SRP (Single Responsibility Principle) 단일 책임의 원칙

하나의 모듈이 하나의 책임을 가져야 한다.

모듈이 변경되는 이유가 한 가지여야 한다

 

장점

  • 변경이 필요할 때 수정할 대상이 명확해진다.

 

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

  • 확장에 대해 열려있고 수정에 대해서는 닫혀있어야 한다는 원칙

확장에 대해 열려있다: 요구사항이 변경될 때 새로운 동작을 추가하여 애플리케이션의 기능을 확장할 수 있다.

수정에 닫혀 있다: 기존의 코드를 수정하지 않고 애플리케이션의 동작을 추가하고나 변경할 수 있다.

 

→ 추상화에 의존하면 문제 해결 가능

 

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

  • 클라이언트의 목적과 용도에 적합한 인터페이스만 제공
  • 모든 클라이언트가 자신의 관심에 맞는 public interface만 접근하여 불필요한 간섭을 최소화할 수 있다.
  • 클라이언트에 따라 인터페이스를 분리하면 변경에 대한 영향을 더욱 세밀하게 제어할 수 있다.

 

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

  • 하위 타입은 상위 타입을 대체할 수 있어야 한다는 원칙
  • 자식 클래스가 부모 클래스를 대체하기 위해 부모 클래스에 대한 클라이언트의 가정을 준수해야 한다.
  • 클라이언트의 입장에서 생각해야 함!!

 

□ LSP를 위반할 수 있는 상황

 

 

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

  • 고수준 모듈은 저수준 모듈의 구현에 의존해서는 안되며, 저수준 모듈이 고수준 모듈이 의존해야 한다
    • 고수준 모듈: 입력과 출력으로부터 먼(비즈니스 관련) 추상화된 모듈
    • 저수준 모듈: 입력과 출력으로부터 가까운(HTTP, DB, 캐시등) 구현 모듈
  • 비즈니스와 관련된 부분이 세부 사항에는 의존하지 않는 설계 원칙을 의미

 

의존 역전 원칙이 위배되는 경우 개방 폐쇄 원칙 역시 위배될 가능성이 높다.

의존 역전 원칙에서 의존성이 역전되는 시점은 컴파일 시점이다.

 

 

# 참고한 사이트 

 

[OOP] 객체지향 프로그래밍의 5가지 설계 원칙, 실무 코드로 살펴보는 SOLID

이번에는 객체 지향 프로그래밍의 5가지 핵심 원칙인 SOLID에 대해 알아보고자 합니다. 실제로 애플리케이션을 개발할 때 어떻게 적용할 수 있을지 구체적인 예시를 들어 살펴보고자 합니다. 아

mangkyu.tistory.com

 

 

'Backend > Spring' 카테고리의 다른 글

Component Scan  (0) 2024.01.09
Singleton Container  (0) 2024.01.09
Container와 Bean  (0) 2024.01.08
스프링 핵심 원리 이해 1, 2  (0) 2024.01.04