1. 아키테처 영역

Untitled

public class CancelOrderService {
	@Transactional
	public void cancelOrder(String orderId){
		Order order = findOrderById(orderId);
		if (order == null) throw new OrderNotFoundException(orderId);
		order.cancel();
	}
	...
}

2. 계층 구조 아키텍쳐

: 상위 계층에서 하위 계층으로의 의존만 존재하고, 하위 계층에서 상위 계층으로의 의존은 존재하지 않는다.

Untitled

⇒ DIP를 사용하여 ‘테스트 어려움’ 과 ‘기능 확장의 어려움’을 해결하자.

3. DIP (Dependency Inversion Principle)

Untitled