SRP : 단일 책임 원칙
OCP : 개방 - 폐쇄 원칙
//기존 방식은 구현 객체를 변경하려면 클라이언트 코드를 변경 해야 한다.
public class MemberService {
//private MemberRepository memberRepository = new MemoryMemberRepository(); //기존 코드
private MemberRepository memberRepository = new JdbcMemberRepository(); //변경 코드
}
//객체를 파라미터로 전달 받아 클라이언트 코드에서 변경 하지 않아도 memberRepository가 변경 될 수 있게 한다.
public class MemberService {
private final MemberRepository memberRepository;
public MemberService(MemberRepository memberRepository) {
this.memberRepository = memberRepository;
}
}
LSP : 리스코프 치환 원칙
ISP : 인터페이스 분리 원칙
DIP : 의존 관계 역전 원칙