이 포스팅은 스프링 핵심 원리 - 기본편 강의를 듣고 정리한 것입니다.
객체 지향 프로그래밍이란?
- 객체 지향 프로그래밍은 컴퓨터 프로그램을 명령어의 목록으로 보는 시각에서 벗어나 여러 개의 독립된 단위, 즉 "객체"들의 모임으로 파악하고자 하는 것이다. 각각의 객체는 메시지 를 주고받고, 데이터를 처리할 수 있다.
- 객체 지향 프로그래밍은 프로그램을 유연하고 변경이 용이하게 만들기 때문에 대규모 소프트웨어 개발에 많이 사용된다.
이 때, 유연하고 변경이 용이하게 해주는 것이 다형성입니다.
다형성이란?
- 하나의 클래스나 메소드가 다양한 방식으로 동작이 가능한 것을 의미
- 부모클래스가 자식클래스의 값으로 대체되는 오버라이딩
- 같은 메소드의 매개변수(parameter)에 따라 다르게 동작하는 오버로딩
다형성은 실세계를 역할(인터페이스)과 구현(구현 객체)으로 분리합니다. 따라서 유연해지며 변경이 편해집니다 = 클라이언트를 변경하지 않고 서버의 구현 기능을 유연하게 변경할 수 있습니다
장점은 다음과 같습니다.
- 클라이언트는 대상의 역할(인터페이스)만 알면 된다.
- 클라이언트는 구현 대상의 내부 구조를 몰라도 된다.
- 클라이언트는 구현 대상의 내부 구조가 변경되어도 영향을 받지 않는다.
- 클라이언트는 구현 대상 자체를 변경해도 영향을 받지 않는다.
객체 지향 설계 원칙 (SOLID)
1. 단일 책임 원칙 (SRP)
- 한 클래스는 하나의 책임만 가져야 한다. 변경이 있을 때 파급효과가 적어야 원칙을 잘 따른 것.
2. 개방 폐쇄 원칙 (OCP)
- 소프트웨어 요소는 확장에는 열려있으나 변경에는 닫혀 있어야 한다.
3. 리스코프 치환 원칙 (LSP)
- 프로그램의 객체는 프로그램의 정확성을 깨뜨리지 않으면서 하위 타입의 인스턴스로 바꿀 수 있어야 한다.
4. 인터페이스 분리 원칙 (ISP)
- 특정 클라이언트를 위한 인터페이스 여러 개가 범용 인터페이스 하나보다 낫다.
5. 의존관계 역전 원칙 (DIP)
- 클라이언트가 구현 클래스에 의존하면 안되고 인터페이스에 의존해야 한다.
'Back-end > Spring' 카테고리의 다른 글
[SpringBoot] 컴포넌트 스캔과 의존관계 자동 주입 (@Component, @Autowired, @RequiredArgsConstructor) (0) | 2022.01.16 |
---|---|
SOLID 적용하여 리팩토링하기 (0) | 2022.01.10 |
[SpringBoot] 10주차 스터디(AOP, 트랜잭션) (0) | 2021.10.23 |
[SpringBoot] 9주차 스터디 (페이징, JPA 연관관계) (0) | 2021.10.17 |
[SpringBoot] 8주차 스터디 (단위테스트, 통합테스트) (0) | 2021.10.07 |