카테고리 없음

SOLID (객체 지향 설계)에 대해 알아보자.

vitamin3000 2024. 11. 26. 21:20

 

 

현재 React를 공부하고 있는데,

 

각 컴포넌트를 설계할 때 사용하는 SOLID에 대해 공부해보고, 이를 적용해보고자 한다.

 

정의 : 프로그래머가 시간이 지나도 유지 보수와 확장이 쉬운 시스템을 만들고자 할 때 사용

 

1. S(SRP) 단일 책임 원칙

 

모든 클래스는 하나의 책임만 가지며, 클래스는 그 책임을 완전히 캡슐화 해야한다.

한 클래스를 한 관심사에 집중하도록 유지하는 것이 중요한 이유는 , 이것이 클래스를 더욱 튼튼하게 만들기 때문이다.

 

2. O(OCP) 개방-페쇠 원칙

소프트웨어 개체(클래스, 모듈, 함수 등등)는 확장에 대해 열려있어야 하고, 수정에 대해서는 닫혀있어야 한다

이 원칙이 잘 적용되면, 기능을 추가하거나 변경해야 할 때 원래 코드를 변경하지 않고 기존 코드에 새로운 코드를 추가함으로써 기느의 추가나 변경이 가능하다.

 

  • 확장에 대해 열려있다
    • 모듈의 확장할 수 있음을 의미, 모듈이 하는 일을 변경할 수 있다
  • 수정에 대해 닫혀있다
    • 모듈의 소스 코드나 바이너리 코드를 수정하지 않아도 모듈의 기능을 확장하거나 변경할 수 있다

 

3. L(LSP) 리스코프 치환 원칙

컴퓨터 프로그램에서 자료형 S가 자료형 T의 서브타입이라면 필요한 프로그램의 속성(정확성, 수행하는 업무 등)의 변경 없이 자료형 T의 객체를 자료형 S의 객체로 교체(치환)할 수 있어야 한다는 것

 

4. I(ISP) 인터페이스 분리 원칙

클라이언트가 자신이 이용하지 않는 메서드에 의존하지 않아야한다는 것

큰 덩어리의 인터페이스들을 구체적이고 작은 단위들로 분리시킴으로써 클라이언트들이 꼭 필요한 메서드들만 이용할 수 있게 한다.

이와 같은 작은 단위들을 "역할 인터페이스"라고도 부른다.

이를 통해 시스템 내부 의존성을 약화시켜 리팩토링, 수정, 재배포를 쉽게 할 수 있다.

 

5. D(DIP) 의존관계 역전 원칙

상위 계층(정책 결정)이 하위 계층(세부 사항)에 의존하는 관계를 반전(역전)시킴으로써 상위 계층이 하위 계층의 구현으로부터 독립되게 할 수 있다.

  • 상위 모듈은 하위 모듈에 의존해서는 안된다. 
    • 상위 모듈과 하위 모듈 모두 추상화에 의존해야 한다
  • 추상화는 세부 사항에 의존해서는 안된다
    • 세부사항이 추상화에 의존해야한다.
  • 상위와 하위 객체 모두가 동일한 추상화에 의존해야 한다.

참고문헌https://ko.wikipedia.org/wiki/SOLID_(%EA%B0%9D%EC%B2%B4_%EC%A7%80%ED%96%A5_%EC%84%A4%EA%B3%84)