Today I Learned_220404
Spring Framework
객체 지향의 특징과 스프링
객체 지향의 특징 : 추상화, 캡슐화, 상속, 다형성 -> 스프링에서는 다형성의 개념이 중요하다.
스프링 프레임워크는 어떻게 보면 다형성을 쉽게 구현할 수 있도록 지원하는 프레임워크. (제어의 역전, 의존관계 주입)
객체 지향 프로그래밍이란?
프로그램을 객체들의 모임으로 파악
각각의 객체는 메시지를 주고받으며 협력하며 데이터를 처리
객체지향 프로그래밍은 프로그램을 유연하고 변경이 용이하게 만든다. -> 유연하고 변경이 용이하게 만들기 위해 다형성 개념이 활용됨
다형성
기능이 똑같으면 성능이 더 좋은 내부 처리 로직으로 변경할 수 있음 - 다형성
다형성에서는 역할과 구현이 구분이 된다.
역할과 구분을 구현했을때의 장점 -> 클라이언트는 인터페이스만 알면 되며, 내부 구조를 몰라도 된다. 또한 내부 구조가 변경되어도 영향이 없으며 구현체 대상 자체를 변경해도 영향을 받지 않는다.
프로그래밍할 때, 객체를 설계할 때 인터페이스를 먼저 잘 설계하고, 그 인터페이스에 맞는 구현 객체를 만들어야 한다.
다형성 구현 시 인터페이스를 사용하는 이유? 클래스 상속은 단일상속만 가능하지만, 인터페이스는 다중상속이 가능하기에 가급적이면 인터페이스를 사용한다.
다형성을 활용하는 예시 - 오버라이딩, 업캐스팅
다형성 정리
다형성을 활용하면 클라이언트를 변경하지 않고 서버의 구현 기능을 유연하게 변경할 수 있다.
확장 가능한 설계를 할 수 있다(신기술이 나와도 적용이 바로 가능하다)
인터페이스가 변경되면 서버와 클라이언트 모두 크게 변경이 된다.
그만큼 인터페이스가 중요하므로, 인터페이스를 잘 설계하는 것이 중요하다.