[Spring] 객체 지향, 인터페이스, 스프링
2024. 1. 8. 23:24ㆍBackend/Spring

📝 인프런에서 강의를 하고 계시는 김영한 님의 Spring Framework를 공부하고 있습니다. 틀리거나 다른 부분이 있을 수 있습니다.
1.
상수와 추상 메서드만 가지고 있는 인터페이스는 '설계도'와 같은데, 인터페이스는 구현 클래스를 통해 구현될 수 있다.
// 인터페이스
interface ExampleInter {
public abstract Act(int num);
}
// 구현 클래스 A
class ExampleImplA implements ExampleInter {
public String Act(int num){
String str = "예시" + num;
return str;
}
}
// 구현 클래스 B
class ExampleImplB implements ExampleInter {
public String Action(int num){
String stri = "다른 예시" + num;
return stri;
}
}
2.
객체 지향 프로그램은 프로그램을 유연하게 만들고 용이하게 만들 수 있다고 한다.
이는 역할과 구현을 구분하였기 때문에 가능한데, 이 예시가 인터페이스와 구현 클래스이다!
위의 예시처럼 인터페이스를 잘 만들어놓으면, 구현하는 클래스를 변경함으로 서버의 구현 기능을 변경할 수 있다!
때문에 인터페이스를 잘 설계하는 것이 중요하다!
3.
그러나 프로젝트를 진행하다보면, 좋은 객체 설계 원칙인 SOLID에서 OCP, DIP를 위반하게 된다.
- OCP(Open/closed principle): 확장에는 열려 있음, 변경에는 닫혀 있음
- DIP(Dependency inversion principle): 추상에 의존o, 구체에 의존x
이 문제를 해결한 것이 스프링이고, DI 등을 통해 해결한다고 한다.
공부중인데.. 재밌네!!! 부족하지만 하나씩 공부!!!
References
1. 김영한 스프링 핵심 원리 - 기본편
2. 신용권 - [혼자 공부하는 자바]
3. 남궁성 - [JAVA의 정석 기초편]
'Backend > Spring' 카테고리의 다른 글
| [Spring] Class Assertions (0) | 2024.01.24 |
|---|---|
| [Spring] Spring Container (1) | 2024.01.23 |
| [Spring] hello world 띄워보기 + MySQL 및 JPA 연결 확인 (0) | 2023.09.15 |
| [Error/Spring] Maximum upload size exceeded (1) | 2023.09.13 |
| [Error/Spring] org.apache.ibatis.binding.bingdingException: parameter ' ' not found (0) | 2023.08.28 |