티스토리 뷰

TIL

[스프링 핵심 기본 원리] SOLID 원칙

호호홍얍얍 2022. 8. 10. 11:28

1. SRP 단일책임원칙 Single Responsibility Principle

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

  -> 변경이 있을 때 파급효과가 적어야 한다.

 

2. OCP 개방-폐쇄원칙 Open/Closed Principle

* 확장에는 열려 있으나, 변경에는 닫혀 있어야 한다.

* 다형성을 활용하여, 인터페이스를 구현한 새로운 클래스를 만들어서 새로운 기능을 구현했다고 해보자.

  이때, 서비스 단에서는 아래와 같은 코드를 작성하게 된다.

MemberRepository mp = new MemoryMemberRepository();

  그런데, mp를 new JdbcMemberRepository();로 바꾸어야 한다면?

  DIP를 위반하게 되고, 변경에 열려 있는 것이 되어 버린다.

  -> 이것을 해결하려면 빈 컨테이너를 활용하여 DI를 하는 것이 필요하다.

 

3. LSP 리스코프 치환원칙 Liskov Substitution Principle

* 프로그램의 객체는 프로그램의 정확성을 깨트리지 않으면서 하위 타입의 인스턴스로 바꿀 수 있어야 한다.

  - 자동차 인터페이스의 엑셀: 앞으로 간다는 규약 -> 뒤로 간다는 기능을 만들어서는 안 됨

 

4. ISP 인터페이스 분리 원칙 Interface Segregation Principle

* 특정 클라이언트를 위한 인터페이스 여러 개가 범용 인터페이스 하나보다 낫다

  - 자동차 인터페이스를 정비사/운전으로 쪼개라

 

5. DIP 의존관계 역전 원칙 Dependency Inversion Principle

* 프로그래머는 '추상화에 의존해야지, 구체화에 의존하면 안 된다'

 - 의존성 주입은 이 원칙을 따르는 것이다. 

 - 역할에 대해서만 알아야 하는 것. 구현에 의존하면 안 된다.

 

 

=====

* 다형성만으로는 OCP, DIP를 지킬 수 없다 -> 스프링 프레임워크를 사용한다!

* 객체지향: 객체들의 모임. 객체는 메시지를 주고 받고 데이터를 처리한다.

* 다형성: 역할과 구현으로 구분할 수 있다.

'TIL' 카테고리의 다른 글

SQL문 - Join, Case when, Datetime  (0) 2022.08.31
[오늘 한 것 & 배운 것]  (0) 2022.08.26
20220713  (0) 2022.07.13
목표  (0) 2022.06.23
클론 프로젝트  (0) 2022.06.23
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2026/05   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
31
글 보관함