2-1) 의존성

Hyoin Jeong·2022년 7월 18일
0

의존성이란?

어떤 객체가 협력하기 위해 다른 객체를 필요로 할 때 두 객체 사이의 의존성이 존재하게 된다.
의존성은 실행 시점과 구현 시점에 서로 다른 의미를 가짐

  • 컴파일타임 의존성: 코드를 작성하는 시점에서 발생하는 의존성. 클래스 사이의 의존성.
  • 런타임 의존성: 애플리케이션이 실행되는 시점의 의존성. 객체 사이의 의존성.

[예제]

  • order가 discount해줄 때 특정한 금액을 -해줘서 fixed된 값만큼 깎아주는 vourcher를 만들려고함
  • order가 vourcher를 사용함으로써 totalAmout를 구해지게 변경

→ 컴파일타임 의존성

⇒ 문제점 : Order가 FixedAmountVourcher를 사용하고 있는데 FixedAmountVourcher에 변화가 생기면 Order에도 큰 변화가 일어남

FixedAmountVourcher에서 discount로직을 수정하면 order의 tatalAmount계산로직에 변경이 일어나고 Assert.isTrue가 실패함

⇒ 강한 결합도

결론

지금 의존성은 컴파일타임 의존성을 가지고 강한 결합도이다. 이를 개선하기 위해 느슨한 결합도로 변경해야하는데 이를 위해 런타임 의존성으로 변경해야한다.

FixedAmountVourcher는 이미 로직이 구현되어있는 구현체이므로 Voucher라는 인터페이스를 구현하자

⇒ 결합도에서 계속

0개의 댓글