• DIP
    • 제일 중요함
    • 의존관계를 역전시킴
      • 클래스에 의존하는게 아니라, 인터페이스에 의존!!
    • spring DI에 연관이 있음
      • DIP잘 이해하면 Spring의DI를 잘 이해할 수 있음
      • IoC 알아서 의존성을 주입해줌<
        • 구현 클래스 선택을 spring이 해줌
    • interface 대부분 사용
      • abstract class도 사용가능하긴 한데, abstract class는 주로 필드 기반이기 때문에
      • interface는 기능 위주로
      • interface가 추상화가 높음 (abstract class는 계층구조가 있기 때문에)
    • 기본적으로 추상화를 굳이 안해도 된다면 추상화를 하지 마셈
      • 무분별한 추상화는 옳지 않음
        • 확장도 가능한지, 언제든지 다른 부품으로 갈아치울 수 있는지