ドメイン駆動開発道

ドメイン駆動開発を実践できず、悶々とする毎日を送るおやじSEのブログです。

ドメインモデルの実装(3) ~implementing the method~

テストケースに対するアプリ側のコードを実装します。

public class PlaceOrderServiceImpl implements PlaceOrderService {
	
	private PendingOrderRepository pendingOrderRepository;
	
	public PlaceOrderService(PendingOederRepository repository) {
		this.pendingOrderRepository = repository;
	}
	
	public PlaceOrderServiceResult updateDeliveryInfo(
			String pendingOrderId, Addres deliveryAddress, Date deliveryTime) {
		PendingOeder pendingOrder = pendingOrderRepository.findOrCreatePendingOrder(pendingOederId);
		
		boolean success = pendingOrder.updateDeliveryInfo(deliveryAddress, deliveryTime);
		
		return new PlaceOedreServiceResult(success, pendingOrder)
	}

}

PlaceOrderServiceは、PendingOrderRepositoryとPendingOrderClassとコラボレートします。
しかしこの時点では、まだ深入りしたくないので、モックを使用します。

jMockを使用するにあたり、PendingOrderRepositoryとPendingOrderの各インターフェース必要とします。

PendingOrderRepositoryは、findOrderCreatePendingOrder()を定義します。

public interface PendingOrderRepository {
	
	PendingOrder findOrCreatePendingOrder(String pendingOrderId);

}

PendingOrderのupdateDeliveryInfo()は、とりあえずfalseを返します。

public interface PendingOrder {
	
	public boolean updateDeliveryInfo(Address deliveryAddress, Date deliveryTime) ;

}