역할, 구현으로 세상을 구분
ex01) 운전자,자동차(k3,아반떼,테슬라) 새로운 차가 출시해도 그차에대해서 클라이언트가 따로 공부할 필요는없다.
ex02) 로미오(장동건,원빈) ,줄리엣(김태희,송혜교) 역할이 있고 배우는 변경(대체)가 가능하다.
이러한것이 변경에 용이하다는 의미이다.
자바 언어의 다형성을 활용
- 역할 = 인터페이스
- 구현 = 인터페이스를 구현한 클래스, 구현 객체
객체를 설계할 때 역할과 구현을 명확히 분리한다.
인터페이스를 안정적으로 잘 설계하는 것이 중요하다!
SRP 단일 책임 원칙
OCP 개방-폐쇄 원칙
LSP 리스코프 치환 원칙
ISP 인터페이스 분리 원칙
DIP 의존관계 역전 원칙
프로그래머는 추상화에 의존해야지, 구체화에 의존하면 안된다.
MemeberRespository m = new MemoryMemberRepository();
MemberRepitory에 의존해야하지만 new MemoryMemberRepository로 인해 구체화된 것에 의존하고있어서 DIP 위반
스프링은 다음 기술로 다형성 + OCP,DIP를 가능하게 지원을 해준다
김영한 님의 스프링 핵심 원리 - 기본편을 참고하여 정리한 글입니다.
링크텍스트