다형성의 실세계 비유
•
운전자-자동차
◦
자동차(자동차 역할==인터페이스)가 바뀌어도 운전자에게는 영향을 미치지 않음
◦
자동차 모델 == 구현
•
공연 무대
•
키보드, 마우스, 세상의 표준 인터페이스들
•
정렬 알고리즘
•
할인 정책 로직
역할과 구현을 분리
•
역할과 구현으로 구분하면 단순, 유연해지고, 변경이 편리해진다
•
객체 설계시 역할을 먼저 부여하고, 그 역할을 수행하는 구현 객체 만들기
•
클라이언트 : 요청, 서버 : 응답
자바 언어의 다형성
•
오버라이딩
◦
다형성으로 인터페이스를 구현한 객체를 실행 시점에 유연하게 변경 가능
◦
클래스 상속관계도 다형성, 오버라이딩 적용가능
•
인터페이스를 구현한 객체 인스턴스를 실행 시점에 유연하게 변경 가능
스프링과 객체 지향
•
다형성이 가장 중요
•
스프링은 다형성을 극대화해서 이용할 수 있게 도와줌
•
제어의 역전, 의존관계 주입은 다형성을 활용해서 역할과 구현을 편리하게 다룰 수 있도록 지원함
•
스프링을 사용하면 구현을 편리하게 변경 가능


