티스토리 뷰
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
- MVC
- 자바의정석
- OneToMany
- 패키지
- controller
- ORM
- ResetController
- GIT
- Java
- toCharArray
- 고민
- ManyToMany
- AfterEach
- overfatching
- 서버환경
- DI
- 몽고db
- bean
- 상속
- 스프링부트
- 배열
- AssertJ
- 단항연산자
- jinja2
- 임포트
- ManyToOne
- 항해99
- 제어자
- IOC
- clean-up policy
| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 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 |
