역할(인터페이스)과 구현(인터페이스를 구현한 객체)으로 세상을 구분할 수 있다.
Ex). 운전자-자동차, 공연-무대..........
이렇게 역할과 구현으로 구분하면 세상이 단순해지고, 유연해지며 변경도 편리해진다.
그럼 JAVA에서는 어떨까??
역할을 인터페이스, 구현을 그 인터페이스를 구현한 객체(클래스)라고 앞으로 설명하겠다.
객체를 설계할 때는 '역할' 과 '구현'을 철저하게 분리해야 한다.
아직 이것이 무슨 소리인지 감이 안잡힐 수 있다.
쉽게 말해, 객체를 설계할 때는 역할(인터페이스)을 먼저 부여하고, 그 역할을 수행하는 구현 객체를 만들어야 한다는 것이다.(구현보다 역할이 더 중요하다)
이런 코드가 있다.
public class MemberService { private MemberRepositroy memberRepository = new MemoryMemberRepository(); }
public class MemberService { private MemberRepositroy memberRepository = new JdbcMemberRepository(); }
MemberService가 MemberRepository인터페이스를 선언해놓고,
값을 MemoryMemberRepository를 대입할 수 있고,
그것을 JdbcMemberRepository로 바꿀 수 도 있다.
🧑💻참고🧑💻
스프링-핵심원리 기본편(김영한)