티스토리 뷰

TIL

7월 20일: 객체지향 5원칙 (SOLID)

알롱도담쓰 2023. 7. 20. 14:22

객체지향 5원칙

  • 시간이 지나도 변경이 용이하고 유지보수와 확장이 쉬운 소프트웨어 개발 가능
  • 복잡성을 제거해 개발의 생산성을 높일 수 있음
  • 5개 모두 반드시 적용해야 할 필요는 없으며 특정 문제를 해결하기 위한 지침

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

  • 하나의 클래스는 하나의 기능(책임)만 가져야 한다.
  • 즉, 하나의 기능에 대해서만 책임을 져야 한다.
  • 하나의 클래스에서 여러 개의 기능이 있다면 수정 사항이 발생했을 때, 수정해야 하는 부분이 많아진다.
  • 하지만 하나의 클래스에서 하나의 기능만 있다면 수정해야 할 부분이 적어져 유지보수에 도움이 된다.
  • 높은 응집도와 낮은 결합도

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

  • 확장에는 열려 있고(open) 수정에는 닫혀(close) 있어야 한다.
  • 즉, 기본 코드를 변경하지 않으면서 기능을 수정, 추가할 수 있도록 설계
  • 추상화를 활용하여 기능 확장을 도모

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

  • 하위 클래스가 상위 클래스를 대체할 수 있다.
  • 즉, 하위 클래스를 업캐스팅 한 상태에서 상위 클래스를 사용해도 동작이 의도대로 흘러가야 한다.
  • 하위 클래스는 상위 클래스를 상속 받고 오버라이딩을 과하게 하지 않는다.
  • 다형성의 원리

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

  • 클라이언트는 자신이 사용하지 않는 인터페이스에 의존하지 않아야 한다.
  • 즉, 인터페이스에 범용적인 기능을 많이 넣기 보다 사용에 맞게끔 분리
  • 인터페이스에 너무 많은 기능이 있을 경우 상속 받은 클래스는 사용하지 않는 기능도 억지로 구현해야 하는데 이러한 상황을 방지

5) 의존 역전 원칙 (Interface Segregation Principle)

  • 의존 관계를 맺을 때 변화하기 쉬운 것보다 변화하기 어려운 것에 의존하라는 의미
  • 즉 클래스를 직접 참조하는 것보다는 상위 요소(추상 클래스, 인터페이스)를 참조하라는 것
최근에 올라온 글