タグ

デザインパターンに関するjetta_swinginのブックマーク (3)

  • デザインパターンの使い方: Template Method

    Template Methodパターンの例 デザインパターンは強力なツールです。強力なツールには常に誤用の可能性があります。注意を怠ると、ぐちゃぐちゃで何だかよくわからないものを作ってしまったりする危険性があります。 Template Methodは、2つ以上の関連するクラスの間での重複をなくすための、1つの解決策を提供するデザインパターンです。これはGammaらによる『Design Patterns』(1995年)で取り上げられていた23個のパターンのうちの1つです。 Template Methodパターンはリファクタリングの目標と考えるのがよいでしょう。稿では、この目標に向けてコードを手直しする方法を、具体的な例を見ながら説明していきます。「Template Methodパターンとは何ぞや」ではなく、実際にリファクタリングを行い、その結果について語ることにします。 今回のサンプルでは

    デザインパターンの使い方: Template Method
  • デザインパターンの使い方: Composite

    Compositeパターンの例 コンポジット(composite)とは、他の複数のオブジェクトからなる複合物のことです。Compositeパターンは、クライアントコードが複合オブジェクトを非複合オブジェクトと同じように扱うことのできる状況で使われます。 稿のサンプルでは、SQLの複合条件を表現するという要件をCompositeパターンでいかにスマートに実現できるかを示します。SQLの単体の条件句(例えばname like 'abc%'など)は、andなどの接続詞を使って結合できます。従って、and式はlikeなどの句から成る複合句と考えられます。 コンポジットの組み立て方を紹介するために、まず低レベルで必要とされるオブジェクトを実装することにします。 最初にColumnクラスで列の名前をカプセル化します。各種のSQLステートメントを構築するときに必要な列の詳細情報は、このColumnクラ

    デザインパターンの使い方: Composite
  • デザインパターンの使い方: Adapter

    Adapterパターンの例 Portfolioクラスは、ユーザーの株式購入履歴を追跡するアプリケーションの基礎となるものです。当然ながら、ポートフォリオに最も求められる機能は、これらの株式購入の価値を計算することです。 PortfolioTestクラス(リスト1を参照)は、Portfolioクラスが値を正しく取得できることを検証するのに役立つ単純なスタブの使用例を示しています。Portfolioクラス(リスト2を参照)は、StockLookupServiceインターフェイスを通じて呼び出しを行うことで、各シンボルの価格を取得します。StockLookupServiceのしくみは単純です。このサービスは、株式シンボルが与えられると、そのシンボルの現在のドル価格を返します。StockLookupServiceインターフェイスの定義は次のとおりです。 import static org.juni

    デザインパターンの使い方: Adapter
  • 1