・注文可能な数量か? 検証NG ファクトリメソッド 検査例外 注文不可能な商品 注文不可能な数量 public class 注文不能な商品 extends Exception { public 注文不能な商品(){ super("注文不能な商品です"); } } public class 注文不能な数量 extends Exception { public 注文不能な数量() { super("注文不能な数量です"); } }1
// このファクトリメソッドが外部からの唯一のインスタンス化の方法 public static 注文 create(UUID userId, UUID productId, int quantity) throws 注文不能な商品 , 注文不能な数量 { if (!注文可能な商品である(productId)) throw new 注文不能な商品(); if (!注文可能な数量である(quantity)) throw new 注文不能な数量(); return new 注文(UUID.randomUUID(), userId, productId, quantity); } } 検査例外でドメインエラーを表現する