티스토리 뷰
객체 지향 요소
- 추상화
- 캡슐화
- 상속
- 다형성 ex) 자바 언어의 overriding
→ 다형성은 클라이언트를 변경하지 않고, 서버의 구현 기능을 유연하게 변경할 수 있도록 한다.
→ 스프링은 다형성을 극대화해 이용할 수 있게 도와준다.
객체 지향 프로그래밍
컴퓨터 프로그램을 여러 개의 독립된 단위, 즉 "객체"들의 모임으로 파악하고자 하는 것이다. 각각의 객체는 메시지를 주고받고, 데이터를 처리할 수 있다. 객체 지향 프로그래밍은 프로그램을 유연하고 변경이 용이하게 만들기 때문에 대규모 소프트웨어 개발에 많이 사용된다. (출처: 위키백과)
객체 지향 설계 5원칙: SOLID 원칙
1. SRP: 단일 책임 원칙 (Single Responsibility Principle)
- 모든 클래스는 각각 하나의 책임만 가져야 한다.
- 즉, 어플리케이션에 변경이 있을 때 전체적으로 파급 효과가 적으면 SRP 원칙을 잘 따른 것이다.
2. OCP: 개방-폐쇄 원칙 (Open/Closed Principle)
- 확장에는 열려 있으나 변경에는 닫혀 있는 설계가 이루어져야 한다.
- 다형성을 활용하면 OCP를 지킬 수 있다. (인터페이스로 설계하고, 상세한 구현을 하위 클래스에게 맡긴다.)
- 역할과 구현의 분리!
3. LSP: 리스코프 치환 원칙 (Liskov Substitution Principle)
- 자식 클래스는 언제나 자신의 부모 클래스를 대체할 수 있어야 한다.
- 다형성에서 하위 클래스는 인터페이스 또는 부모 클래스의 규약(책임)을 다 지켜야 한다는 것이다.
4. ISP: 인터페이스 분리 원칙 (Interface Segregation Principle)
- 특정 클라이언트를 위한 인터페이스 여러 개가 범용적인 인터페이스 하나보다 낫다.
- 인터페이스를 분리하면 각각의 역할이 명확해지고, 대체 가능성이 높아진다.
5. DIP: 의존관계 역전 원칙 (Dependency Inversion Principle)
- 추상화에 의존하며 구체화에 의존하지 않도록 설계해야 한다.
- 구체적인 클래스보다 추상적인 인터페이스에 의존해야 한다.
→ 스프링에서는 다형성 만으로 OCP, DIP를 지킬 수 없다. 그래서 DI와 IoC 컨테이너가 필요한 것!
'SPRING' 카테고리의 다른 글
[SPRING] 싱글톤 컨테이너 (0) | 2022.07.16 |
---|---|
[SPRING] 스프링 컨테이너와 스프링 빈 (0) | 2022.07.15 |
[SPRING] 스프링 vs 스프링 부트 (0) | 2022.07.04 |
[SPRING] 코틀린 Kotlin QueryDSL 적용하기 (0) | 2022.04.15 |
[SPRING] 설정값 분리하기, property 값 주입하기 (@Value, application.properties, @PropertySource) (0) | 2022.02.28 |
- Total
- Today
- Yesterday
- 코테
- GithubAPI
- cat
- linuxtouch
- Linux
- 백준27219
- 리눅스
- 리눅스cron
- E_FAIL
- 사용자ID
- 백준
- linux파일
- api문서
- virtualbox
- linuxgedit
- cron시스템
- whatis
- Baekjoon27211
- 버추억박스오류
- awk프로그램
- linuxawk
- SELECT #SELECTFROM #WHERE #ORDERBY #GROUPBY #HAVING #EXISTS #NOTEXISTS #UNION #MINUS #INTERSECTION #SQL #SQLPLUS
- GitHubAPIforJava
- OnActivityForResult
- atq
- baekjoon
- 백준27211
- 쇼미더코드
- Baekjoon27219
- 버추억박스에러
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |