카테고리 없음

객체지향의 솔리드 원칙

rxo2 2025. 5. 8. 20:49

1. SRP - 단일 책임 원칙

클래스는 단 하나의 책임만 가져야 한다.

핵심 개념:

  • 하나의 클래스는 하나의 변경 이유만 가져야 한다.
  • 책임은 변경의 이유와 직결되며, 여러 책임이 있는 클래스는 여러 이유로 변경되어야 하므로 유지보수가 어렵다.

 

2. OCP - 개방-폐쇄 원칙

소프트웨어 요소는 확장에는 열려 있어야 하고, 변경에는 닫혀 있어야 한다.

핵심 개념:

  • 기존 코드를 수정하지 않고도 기능을 확장할 수 있어야 한다.
  • 새로운 요구사항이 생겨도 기존 코드에 영향을 주지 않도록 설계한다.

 

3. LSP - 리스코프 치환 원칙

자식 클래스는 언제나 부모 클래스를 대체할 수 있어야 한다.

핵심 개념:

  • 상속받은 클래스는 부모 클래스의 기능을 깨뜨리지 않고 사용할 수 있어야 한다.
  • “is-a 관계”를 만족해야 하며, 부모 클래스를 사용하는 코드에서 자식 클래스를 넣어도 정상 동작해야 한다.

 

4. ISP - 인터페이스 분리 원칙

클라이언트는 자신이 사용하지 않는 인터페이스에 의존하지 않아야 한다.

 핵심 개념:

  • 하나의 큰 인터페이스보다는 여러 개의 작은 인터페이스가 낫다.
  • 불필요한 의존성을 줄이고, 필요한 기능만 가지도록 인터페이스를 나누자.

 

5. DIP - 의존 역전 원칙

고수준 모듈은 저수준 모듈에 의존해서는 안 된다. 둘 다 추상화에 의존해야 한다.

핵심 개념:

  • 추상화에 의존하고, 구체적인 구현에 의존하지 않아야 한다.
  • 의존성을 낮추고 결합도를 줄이며, 유연한 설계를 가능하게 한다.