演習問題7(商品情報)


演習問題7-2 (Proxy)

演習問題7-1では、Product クラスの get メソッドで指定されたすべての番号で、データベースから商品情報を得ようとしていますが、商品番号は正の値しかありませんので、0や負の値が指定されたときはデータベースから商品情報を得る必要がありません。

しかし、今の Product クラスは正しくない商品番号が指定されても、Database クラスを継承して作られていますので、(非常に時間がかかるかもしれない)Database クラスのコンストラクタが実行されてしまいます。

そこで、正しい商品番号が指定されて初めて Database クラスのコンストラクタが実行されるような ProductInfo クラスを作成してください。

また、正しくない商品番号が指定されたら例外が発生するようにしてください。


実行結果
商品番号が正しくありません。
(データベースへの接続)
(データベースからの読み込み)
製品名:製品名1、小売価格:200
(データベースからの読み込み)
製品名:製品名3、小売価格:600
製品名:製品名1、小売価格:200


コード

Enshu702.java
public class Enshu702 { public static void main(String[] args) { ProductInfo pi = new ProductInfo(); try { Information i0 = pi.get(-1); // 正しくない商品番号 } catch(IllegalArgumentException e) { System.err.println(e.getMessage()); } Information i1 = pi.get(1); System.out.println(i1); Information i2 = pi.get(3); System.out.println(i2); Information i3 = pi.get(1); System.out.println(i3); } }



演習問題7-2 (Proxy)