演習問題1(ショッピングカート 合計金額)


演習問題1-4 (Bridge)

機能を追加するために、styleNormal クラスを継承して作成した新しい StyleComma クラスでも、すでに存在している通貨記号の付加機能を利用することができています。

Bridgeパターンを適用する目的は、「実装方法と機能を別々に拡張できるようにする」ことです。機能を拡張するためのクラス階層と、実装を拡張するためのクラス階層を分けておくことで、実装階層クラス(SymbolKanjiYen や SymbolYenmark)と機能拡張クラス(StyleComma)を好みの組み合わせで利用することができるようになります。

この例では、StyleNormal クラスと ISymbolCurrency インタフェース(あるいは SymbolCurrency クラス)が機能拡張クラス階層と実装拡張クラス階層を橋渡しする役目を果たします。


実行結果
合計金額は 2560円
合計金額は \2560
合計金額は 2,560円
合計金額は 2560円
合計金額は \2,560
合計金額は \2560


コード

Enshu104.java
public class Enshu104 { public static void main(String[] args) { Cart cart = new Cart(); cart.add(new Meat("牛肉", 395, 400)); cart.add(new Vegetable("じゃがいも", 98, 10)); int price = cart.getTotalPrice(); StyleNormal k1 = new StyleNormal(new SymbolKanjiYen()); System.out.println("合計金額は " + k1.display(price)); // 2560円 k1 = new StyleNormal(new SymbolYenmark()); System.out.println("合計金額は " + k1.display(price)); // \2560 StyleComma k2 = new StyleComma(new SymbolKanjiYen()); System.out.println("合計金額は " + k2.displayComma(price)); // 2,560円 System.out.println("合計金額は " + k2.display(price)); // 2560円 k2 = new StyleComma(new SymbolYenmark()); System.out.println("合計金額は " + k2.displayComma(price)); // \2,560 System.out.println("合計金額は " + k2.display(price)); // \2560 } }








演習問題1-4 (Bridge)