객체지향 설계 5원칙 - SOLID

개발자 로그·2021년 5월 24일
0
post-thumbnail

+) 추가 참고

인프런 김영한님 : 스프링 핵심 원리

SRP 단일 책임 원칙

Single Resposibility Principle

“한 클래스는 하나의 책임만 가져야 한다.”
"어떤 클래스를 변경해야 하는 이유는 오직 하나뿐이어야 한다" - 로버트 C.마틴

  • 클라이언트 객체는 실행만 하는 책임만 담당

OCP 개방 폐쇄 원칙

Open Cloesd Principle

“소프트웨어 요소는 확장에는 열려있으나 변경에는 닫혀 있어야 한다.”

“소프트웨어 요소를 새롭게 확장해도 사용 영역의 변경은 닫혀있다.”

  • ex) JDBC - 데이터베이스가 오라클에서 MySQL로 바뀌더라도 Connection을 설정하는 부분 외에는 따로 스정할 필요가 없다
  • 개방 폐쇠 원칙을 무시하고 프로그램을 작성하면 객체 지향 프로그래밍의 가장 큰 장점인 유연성, 재사용성, 유지보수성 등을 얻을 수 없다.

LSP 리스코프 치환 원칙

Liskov Substiution Principle

"서브 타입은 언제나 자신의 기반 타입으로 교체할 수 있어야 한다." - 로버트 C.마틴

  • 상속은 조직도나 계층도( 아버지 - 딸 ) 가 아닌 분류도( 펭귄 - 뽀로로 )가 되어야 한다.
  • 하위형에서 선행 조건은 강화될 수 없다.
  • 하위형에서 후행 조건은 약화될 수 없다.
  • 하위형에서 상위형의 불변 조건은 반드시 유지돼야 한다.

ISP 인터페이스 분리 원칙

Interface Segregation Principle

"클라이언트는 자신이 사용하지 않는 메서드에 의존 관계를 맺으면 안 된다." - 로버트 C.마틴


DIP 의존관계 역전 원칙

Dependency Inversion Principle

“프로그래머는 추상호에 의존해야지 구체화에 의존하면 안된다. 의존성 주입은 이 원칙을 따르는 방법 중 하나다.”
"자신보다 변하기 쉬운 것에 의존하지 마라."

  • 상위 클래스일수록, 인터페이스일수록, 추상 클래스일수록 변하지 않을 가능성이 높기에 하위 클래스나 구체 클래스가 아닌 상위 클래스, 인터페이스, 추상 클래스를 통해 의존하라는 것
profile
성장하는 개발자

0개의 댓글