객체 지향 특징 - 추상화,캡슐화,상속, 다형성
스프링은 객체지향 언어인 자바 언어 기반의 프레임워크이며 좋은 객체 지향언어가 가진 특징을 잘 살려 좋은 객체 지향 애플리케이션을 개발할 수 있게 도와주는 프레임워크
객체 지향 프로그래밍은 컴퓨터 프로그램을 명령어의 목록으로 보는 시각에서 벗어나 여러 개의 독립된 단위, 즉 "객체"들의 모임으로 파악하고자 하는 것이다. 각각의 객체는 메시지 를 주고받고, 데이터를 처리할 수 있다. (협력)
SOLID
클린코드로 유명한 로버트 마틴이 좋은 객체 지향 설계의 5가지 원칙을 정리
• SRP: 단일 책임 원칙(single responsibility principle)
한 클래스는 하나의 크거나 작은 책임만 가져야한다. 기준이 중요한데
객체의 생성과 사용을 분리 하는 것처럼 파급효과가 적으면 단일 책임 원칙을 잘 따른 것이다.
• OCP: 개방-폐쇄 원칙 (Open/closed principle)
소프트웨어 요소는 확장에는 열려 있으나 변경에는 닫혀 있어야 한다.->다형성 활용
문제점: 구현 객체를 변경하려면 클라이언트 코드를 변경해야한다. 다형성을 사용했지만 OCP원칙을 지킬수가 없다.
이 문제를 스프링이 해결해준다.
• LSP: 리스코프 치환 원칙 (Liskov substitution principle)
프로그램의 객체는 프로그램의 정확성을 깨뜨리지 않으면서 하위 타입의 인스턴스로 바꿀 수 있어야 한다
• ISP: 인터페이스 분리 원칙 (Interface segregation principle)
특정 클라이언트를 위한 인터페이스 여러 개가 범용 인터페이스 하나보다 낫다.
• DIP: 의존관계 역전 원칙 (Dependency inversion principle)
구현 클래스에 의존하지 말고, 인터페이스에 의존하라는 뜻이다.
역할에 의존하게 해야한다는 이야기다.
객체 세상도 클라이언트가 인터페이스에 의존해야 유연하게 구현체를 변경할 수 있다.
다형성 만으로는 OCP, DIP를 지킬 수 없다.
스프링은 다형성 + OCP, DIP를 가능하게 지원
- DI: 의존관계, 의존성 주입
- DI 컨테이너 제공
책 추천해주셔서 사서 공부해야겠다.
출처;
스프링 핵심 원리 - 기본편 - 인프런 | 강의
스프링 입문자가 예제를 만들어가면서 스프링의 핵심 원리를 이해하고, 스프링 기본기를 확실히 다질 수 있습니다., - 강의 소개 | 인프런...
www.inflearn.com
'프레임워크 > Spring' 카테고리의 다른 글
[스프링 입문] 섹션 3 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술 (0) | 2022.05.14 |
---|---|
[spring]스프링 핵심 원리 - 기본편 섹션 3 (0) | 2022.03.26 |
[spring]스프링 핵심 원리 - 기본편 - 섹션2 (스프링 핵심 원리 이해1 - 예제만들기) (0) | 2022.03.24 |
[스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술]섹션 2 (0) | 2022.03.20 |
[스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술]섹션 1 (1) | 2022.03.19 |