자바 스프링 주니어 개발자 오답노트 (3) - 의존성

최준호·2024년 7월 3일
0

의존성

단일 책임 원칙

  • 단일 책임 원칙이란 모든 클래스는 하나의 책임만 가지며, 클래스는 그 책임을 완전히 캡슐화해야 함을 일컫는다. 클래스가 제공하는 모든 기능은 이 책임과 주의 깊게 부합해야 한다.
  • 클래스는 하나의 목적만 가지고 있어야한다.

개방 폐쇄 원칙

  • 확장에는 열려있고, 수정에는 닫혀있어야 한다라는 내용. 만약 새로운 기능을 추가하는데 기존에 있던 코드를 이것저것 건드려야 한다면 확장에는 닫혀있는 거고, 기능을 추가하는데 이 파일 저 파일 수정해야한다면 수정에는 열려있다는 겁니다.
  • 따라서 기존의 코드에 새로운 코드를 추가함으로써 기능의 추가나 변경이 가능해야합니다.

리스코프 치환 원칙

  • 자료형 S가 자료형 T의 하위형이라면 필요한 프로그램의 속성(정확성, 수행하는 업무 등)의 변경 없이 자료형 T의 객체를 자료형 S의 객체로 교체(치환)할 수 있어야한다는 원칙.

  • 반대되는 예시로 보여줍니다. 사각형을 상속받는 정사각형이 높이를 변경함으로써 규칙이 깨지는걸 확인할 수 있습니다.

인터페이스 분리 원칙

  • 인터페이스 : 서로 다른 두 개 이상의 독립된 컴퓨터 시스템 구성 요소 간에 정보를 교환하는 공유 경계이다.

  • 예시로 인터페이스는 public 메소드를 의미합니다.
  • 인터페이스 분리 원칙은 클라이언트가 자신이 잉용하지 않는 메소드에 의존하지 않아야 한다라는 말에 의미는

의존성 역전 원칙

  • 상위 모듈은 하위 모듈에 의존해서는 안된다. 상위 모듈과 하위 모듈 모두 추상화에 의존해야 하낟.
  • 추상화는 세부 사항에 의존해서는 안된다. 세부사항이 추상화에 의존해야 한다.

  • 위 예시를 보면 셰프라는 클래스는 햄버거를 만드는 메소드를 가지고 있습니다. 즉 셰프는 빵, 고기, 양상추, 소스, 햄버거에 의존한다고 볼 수 있습니다.
  • 클래스를 사용하고 있기 때문입니다!

  • Dependency Injection과 Dependency Inversion은 다릅니다.
    Dependency Injection(DI) : 의존성 주입
    Dependency Inversion(SOLID - DIP) : 의존성 역전

  • 맥도날드는 셰프라는 인터페이스를 통해 일을 시키는 것 뿐이고 햄버거 셰프는 셰프를 구현한 것뿐.
  • 따라서 의존성 역전의 원칙은 화살표 방향을 반대로 바꾼 테크닉이다.

profile
변화를 두려워하는 사람이 가장 불행한 사람이다.

0개의 댓글