SpringFramework/Spring 중요 개념
[Spring] 좋은 객체지향 프로그래밍이란?
쭈봉이
2021. 12. 12. 23:59
객체지향 특징
- 추상화
- 복잡한 자료, 모듈, 시스템 등으로부터 핵심적인 개념 또는 기능을 간추려 내는것
- 코드의 재사용성, 가독성, 일관된 방향성
- 캡슐화
- 객체의 속성과 행위를 하나로 묶고 실제 구현 내용일부를 외부에 감추어 은닉한다.
- 외부에서 잘못된 사용으로 객체가 손상되지 않기 위해 사용, 접근 제한자 사용
- 상속
- 객체들간의 관계를 구축.
- 기존 클래스의 속성과 동작을 사용하기 위함
- 다형성 (오버라이딩)
- 프로그램 언어의 각 요소들이 다양한 자료형에 속하는 것을 허용
- 자료형에 따라 여러 타입의 요소를 생성할 수 있음
객체지향 프로그래밍
- 객체들의 모임으로 파악하는것. 각 객체는 메시지를 주고 받고 데이터를 처리
- 프로그램을 유연하고 변경을 용이하게 만들어준다 -> 컴포넌트를 쉽고 유연하게 변경하면서 사용 (다형성)
- 역할과 구현으로 분리 -> 단순, 유연, 변경이 편리 (클라이언트 영향 X)
역할과 구현을 분리
- 실세계의 역할과 구현이라는 편리한 컨셉을 다형성을 통해 객체 세상으로 가져올 수 있음
- 유연하고 변경에 용이
- 확장 가능한 설계
- 클라이언트에 영향을 주지 않는 변경이 가능
- 인터페이스를 안정적으로 잘 설계하는 것이 중요 (역할 자체가 변하면 클라이언트 서버 모두에 큰 변경이 발생)
결론
- 다형성이 가장 중요하다!
- 스프링은 다형성을 극대화해서 이용할 수 있게 도와준다
- 스프링에서 이야기하는 제어의역전(IoC), 의존관계 주입(DI)는 다형성을 활용해서 역할과 구현을 편리하게 다룰 수 있도록 지원한다.
- 스프링을 사용하면 마치 레고블럭 조립하듯이 구현을 편리하게 변경할 수 있다.