[OOP] SOLID

golony·2022년 12월 13일
0

개발

목록 보기
20/23
post-thumbnail

개요: SOLID

이 내용은 '스프링 입문을 위한 자바 객체지향의 원리와 이해의 5장을 기반으로 정리한 내용입니다.
http://gmkt.kr/goNxOm

객체지향 프로그래밍의 5원칙

Single Responsibility Priciple

단일 책임 원칙: 하나의 객체는 하나의 역할만 책임져야 한다.

즉, 사람 객체가 직원, 학생, 아들, 아버지 역할을 동시에 맡으면 안된다.

원칙을 위반하는지 되돌아 볼 필요가 있는 상황: 로직에 if가 점점 늘어난다.

객체의 상태에 따라 다른 행위를 하도록 하기 위한 분기처리가 많아진다. -> Code Smell

Open Close Principle

개방 폐쇄 원칙: 확장에 대해 개방, 변경에 대해 폐쇄 
==> (자신의 확장은 열려있고, 주변의 변화에는 닫혀있다(==영향을 받지 않는다))

예시 1: JDBC

JDBC 인터페이스 기반의 App은 사용하는 인터페이스 구현체의 변화(==DB의 변화)에는 영향을 받지 않는다

  • App은 DB의 교체(==확장)에 열려있음
  • 주변(DB)의 변화에 App에 영향을 주지 않음

예시 2: 편의점

편의점 직원(주변)의 변화가 고객의 구매 행위에 영향을 주지 않음

  • 구매행위는 직원의 변화(==확장)에 열려있음

Liskov Subsitution Principle

리스코프 치환 원칙
=> 하위 클래스의 객체는 상위 클래스의 객체 역할을 수행하는데 문제가 없어야 한다. (== 대체할 수 있어야 한다.)

아래의 원칙을 준수하는 프로그램

  • 하위 분류(클래스)는 상위 분류(클래스)의 한 종류다
  • 구현은 인터페이스(~able) 할 수있다.

==> 상속은 조직도/계층도가 아니라 분류도이다!

  • (X) 부모 - 자식, (O) 동물 - 강아지

Interface Segregation Principle

인터페이스 분리 원칙
-> 객체가 할수 있는 일을 왕창 만들고, 사용할 때는 이를 Interface로 가려서(==분리해서) 사용

객체의 역할/책임을 분리하는 방법 중 하나: SRP와 ISP 중 하나를 선택해 사용할 수 있음
일반적으로는 SRP를 적용하는 것이 좋음 -> 인터페이스 최소주의 원칙

Dependency Inversion Principle

의존성 역전 원칙
profile
더 나은 세상으로 나아가는 서비스를 만들고 싶습니다.

0개의 댓글