Strategyパターンの事例と本連載のまとめ
定額給付金のシミュレーションプログラムでStrategyパターンを解説
「事例で学ぶデザインパターン」最終回となる今回は、定額給付金のシミュレーションプログラムを事例に、GoFのデザインパターンの1つであるStrategyパターンを取り上げます。
Strategyパターン(図1-1)はふるまいに分類されるパターンです。Strategyとは「戦略」という意味で、一言で言うとアルゴリズムのことを指しています。Strategy役はアルゴリズムを利用するためのインターフェースを規定します。そしてConcreteStrategy役はStrategy役のインターフェースで具体的なアルゴリズムを実装します。このパターンはContext役から利用するアルゴリズムを独立させることで、そのアルゴリズムを簡単に交換できるようになります。
例えば、名前を一覧表示するプログラムがあるとします。そのプログラムは昇順や降順で名前を並べて表示できます。この場合、名前の一覧表示プログラムがContext役であり、名前をソートするアルゴリズムがStrategy役になります。そして名前を昇順や降順で並び替える、具体的なソートのアルゴリズムはConcreteStrategy役になります。Context役は、昇順や降順で名前を並び替えるアルゴリズムを交換することで目的を果たします。
定額給付金のシミュレーションプログラムを作成する
定額給付金は、皆さんもご存じのように日本の景気対策の1つとして現在実施している事業です。筆者も先月手続きを済ませたところです。
筆者なりに定額給付金が給付される仕組みを理解するために、図1-2、図1-3のような定額給付金の概念モデルとそのオブジェクト図を作成しました。今回はその概念モデルから定額給付金を給付する仕組みをシミュレーションするプログラムを設計します。そしてその設計を行いながら、デザインパターンを活用するポイントについて解説します。
なお定額給付金の詳細については、総務省の「定額給付金について(http://www.soumu.go.jp/teigakukyufu/)」を参照してください。
■定額給付金 概念モデルの説明
今回作成した定額給付金の概念モデルは、次の制約・前提条件をもとに作成しています。
●制約・前提条件
1)住民票の概念は割愛(住民が存在する=住民登録されているとする)
2)外国人登録原票の概念は割愛
3)世帯の概念は割愛(全員が世帯主)
4)銀行は1つとし、簡易的のものとする
5)住民は1名以上存在することとし、銀行の預金口座を必ず1つ持っている
6)住民の年齢は基準日(平成21年2月1日)をもとに設定する
7)役所は1つとし、給付担当者は1名以上存在する
8)給付担当者は、次の条件で住民に給付する
住民の年齢が18歳以下または65歳以上の場合20,000円、それ以外は12,000円。
9)給付方式は窓口申請方式(口座振り込みにより受給)、窓口現金受領方式(現金受給)のみ
10)未給付、給付済みのステータスは管理しない
以上の制約・前提条件をもとに、定額給付金の給付に関する処理を中心に分析・設計を進めていきます。
1)住民は窓口申請方式か窓口現金受領方式の給付方式を選択し、役所に定額給付金の申請書を提出する
2)役所は受け取った申請書をもとに給付担当者に指示を出す
3)給付担当者は給付条件を確認し、給付金額と給付方式を決定して住民に給付する
●概念図についての補足
住民: 給付金を受け取る資格を持った住民。
給付金申請書: 役所で給付関連の手続きを行う際の申請書。
役所: 地方自治体が住民に対してサービスを提供する場所。
給付担当者: 役所の職員。給付作業を担当する。
給付: 給付担当者が住民に給付金を支給する。
給付方式: 給付金を支給する方法。
銀行: お金を預けることができる場所。複数の口座を持つ。
口座: 住民ひとりひとりの預金を管理する口座。
預金通帳: 開設した口座の入出金の状況を記録するもの。今回は残高のみ管理する。