✅ 자바 언어 기반 프레임워크 - 객체 지향 언어
➡ 좋은 객체 지향 애플리케이션을 개발할 수 있게 도와주는 프레임워크
🤔 좋은 객체 지향?
➞ 객체 지향 특징 : 추상화, 캡슐화, 상속, 다형성✔ 좋은 객체 지향 설계 5원칙 (SOLID)
- 1. SRP (Single Responsibility Principle - 단일 책임 원칙)
- 한 클래스는 하나의 책임만 가져야 함
- 2. ⭐ OCP (Open/Close Principle - 개방/폐쇄 원칙)
- 소프트웨어 요소는 확장에는 열려 있으나 변경에는 닫혀있어야 함
- 다형성 활용
- 인터페이스를 구현한 새로운 클래스를 하나 만들어서 새로운 기능 구현
- 3. LSP (Liskov Substitution Principle - 리스코프 치환 원칙)
- 하위 클래스는 인터페이스 규약을 다 지켜야 함
- ex) 자동차 인터페이스의 엑셀은 앞으로 가라는 기능, 뒤로가게 구현하면 LSP 위반
- 4. ISP (Interface Segregation Principle - 인터페이스 분리 원칙)
- 인터페이스를 기능에 맞게 적당한 크기로 잘 쪼개는게 중요
- 인터페이스가 명확해지고 대체 가능성이 높아짐
ex) 자동차 인터페이스 ➔ 운전 / 정비 인터페이스로 분리
⇨ 사용자 클라이언트 ➔ 운전자 / 정비사 클라이언트로 분리 됨- 5. ⭐ DIP (Dependency Inversion Principle - 의존관계 역전 원칙)
- 추상화에 의존, 구체화에 의존X
- 구현 클래스에 의존X, 인터페이스에 의존
ex) MemberRepository memberRepository = new MemoryMemberRespository(); ➞ 위반➡ 다형성 만으로는 OCP, DIP 지킬 수 없음
➞ 스프링이 가능하게 지원 (클라이언트 코드 변경 없이 기능 확장)
스프링 프레임워크를 편리하게 사용할 수 있도록 지원