객체지향 설계 원칙(SOLID)

정명진·2022년 4월 21일
0

SOLID

객체지향 설계에는 SOLID라고 불리는 5가지 설계 원칙이 있다.

  • SRP(The Single Responsibility Principle): 단일 책임 원칙
  • OCP(The Open Closed Principle): 개방 폐쇄 원칙
  • LSP(The Liskov Substitution Principle): 리스코프 치환 원칙
  • ISP(The Interface Segregation Principle): 인터페이스 분리 원칙
  • DIP(The Dependency Inversion Principle): 의존관계 역전 원칙

SRP

단일책임원칙이란 하나의 객체는 반드시 하나의 동작만을 책임진다는 의미이다.
객체가 담당하는 동작, 즉 책임이 많아질 수록 해당 객체의 변경에 따른 영향도의 양과 범위가 매우 커진다. 단일 책임 원칙은 객체의 책임 의존성 과중을 지양하기 위한 원칙이다.

OCP

개방 폐쇄 원칙이란 객체가 확장에는 열려있고 변경에는 닫혀 있다는 뜻이다. 예를 들어 어떤 기능의 확장에 대해 수정 코드에 대해 전혀 몰라도 상관이 없고 확장된 기능이 해당 객체의 핵심 기능에 아무런 영향을 주지 않는것 이것을 개방 폐쇄 원칙이라 한다.

LSP

리스코프 치환 원칙은 부모 객체와 자식 객체가 있을 때 부모를 호출하는 동작에서 자식 객체가 부모 객체를 대체할 수 있다는 원칙이다. 객체지향의 상속에서 부모 자식 관계가 성립된다. 자식 객체는 부모 객체의 특성을 가지며, 이를 기반으로 확장이 가능하다. 하지만 이 과정에서 무리하거나 원래 의도와 어긋나는 확장으로 인해 잘못된 방향으로 상속되는 경우가 발생하기도 한다. 리스코프 치환 원칙은 올바른 상속을 위해 자식 객체가 부모 객체의 방향과 일치하도록 권하는 원칙이다.

ISP

인터페이스 분리 원칙이란 객체는 자신이 호출하지 않는 메소드에 의존하지 않아야 한다는 원칙이다.
구현할 객체에게 무의미한 메소드 구현을 방지하기 위해 반드시 필요한 메소드만 상속하거나 구현하도록 권고한다.
만약 상속할 객체의 규모가 너무 크다면 해당 객체의 메소드를 작은 인터페이스로 나누는 것이 좋다.

DIP

의존성 역전 원칙이란 객체는 저수준 모듈보다 고수준 모듈에 의존해야 한다는 원칙이다.

  • 고수준 모듈: 인터페이스와 같은 객체 형태나 추상적 개념
  • 저수준 모듈: 구현된 객체

즉 객체는 객체보다 인터페이스에 의존해야 한다라고 이해할 수 있다. 가급적 상속을 객체가 아닌 인터페이스를 통해 하라는 뜻으로 이해하면 될듯 하다.

profile
개발자로 입사했지만 정체성을 잃어가는중... 다시 준비 시작이다..

0개의 댓글