[CS] 객체 지향 설계 5가지 원칙 - SOLID

Jin·2024년 3월 2일

객체 지향 설계 5가지 원칙 - 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) : 의존관계 역전 원칙

  • 추상화와 구체화 중 구체화에 의존해서는 안되며, 추상화에 의존해야한다.
  • 구현체인 구체화에 의존하게 되면 변경이 어려워지는 문제점이 발생하게 되기에, 유연하게 구현체를 변경하기 위해서는 추상화인 인터페이스에 의존하여야 한다.

참고

profile
Move Move!

0개의 댓글