프로그래머는 "추상화에 의존해야지, 구체화에 의존하면 안된다." 의존성 주입은 이 원칙을 따르는 방법 중 하나다. 쉽게 이야기해서 구현 클래스에 의존하지 말고, 인터페이스에 의존하라는 뜻입니다. 클라이언트가 인터페이스에 의존해야 유연하게 구현체를 변경할 수 있습니다. 구현체에 의존하게 되면 변경이 아주 어려워집니다. 바로 DIP를 위반한 코드를 보여드리면서 설명 드리도록 하겠습니다. interface Car{ void rideCar(); } class Tesla implements Car{ @Override public void rideCar() { System.out.println("Tesla에 탑승했습니다."); } } class Genesis implements Car { @Override publ..