하나의 객체가 변경이 일어날 때에 관계를 맺고 있는 다른 객체에게 변화를 요구하는 정도
⇒ 느슨한 결합도로 코드 변경이 필요
⇒ order가 fixedAmount만큼 할인될 지 아니면 percent로 할인될 지 모르지만 Voucher가 적용되어서 “discount”한다는 자체만 알게됨
⇒ order는 Voucer 인터페이스와 컴파일 의존성을 가짐
⇒ order가 런타임에서 특정한 객체(PercentDiscountVoucher or FixedDiscountVoucher)를 만들어서 전달해주는 런타임 의존성으로 변경됨