Hyeok의 웹 개발 블로그

<2025.03.28> 객체 지향 설계 (SOLID 원칙) 본문

TIL/Spring

<2025.03.28> 객체 지향 설계 (SOLID 원칙)

Yhyeok 2025. 3. 28. 20:48

🔎객체 지향 설계

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)

1️⃣ 단일 책임 원칙 SRP(Single Responsibility Principle)

  •   하나의 클래스가 하나의 역할을 가진다.


2️⃣ 개방 폐쇄 원칙 OCP(Open Closed Principle)

  • 소프트웨어 요소는 확장에는 열려있어야하고, 수정에는 닫혀있어야한다.
  • 새로운 기능을 추가 할 때, 기존 코드를 수정하지 않고, 확장할 수 있도록 설계해야한다.

 

 


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

  • 자식 클래스는 언제나 부모 클래스를 대체 할 수 있어야한다.
  • 부모 클래스를 사용하는 곳에서 자식 클래스를 사용해도 프로그램의 동작에 문제가 없어야한다.

 


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

  • 특정 클라이언트를 위한 인터페이스 여러 개가 범용 인터페이스 하나보다 낫다.
  • 클라이언트는 자신이 사용하지 않는 메서드에 의존 X
  • 하나의 큰 인터페이스 보다는 여러 개의 작은 인터페이스로 분리

 

 

 


5️⃣ 의존관계 역전 법칙 DIP(Dependency Inversion Principle)

  • 구체적인 클래스에 의존하지 말고, 인터페이스나 추상 클래스에 의존하도록 설계

  • 추상화된 Notifier 인터페이스에만 의존한다.
    • 새로운 알림 방식이 추가되어도 NotificationService 는 변경되지 않아도 된다.
  • 필요한 Notifier 객체를 외부에서 주입받는다.
    • NotificationService는 어떤 알림 방식을 사용할지에 대한 세부 사항을 몰라도 되므로, 의존성이 약해진다.
  • 모듈간의 결합도를 낮추고 유연성과 확장성을 높일 수 있다.
  • 서로의 변경 사항에 독립적이어서 변경에 유연하다.

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

<2025.04.15> HttpMessageConverter  (2) 2025.04.15
<2025.03.31> IOC / DI  (0) 2025.03.31
<2025.03.21> MVC 패턴  (0) 2025.03.21
<2025.03.20> Spring 입문 2주차  (0) 2025.03.20
<2025.03.19> Spring 입문 - Web Application  (0) 2025.03.20