GRASPパターン[情報エキスパートパターン]
情報エキスパートパターン(Information Expert)
概要
責任の遂行に必要な情報を持っているクラスに責任を割り当てる
- なにか処理を行うには情報が必要になる
- その情報を持っているクラスが自分の情報を使用して処理を行う
- 現実社会においてごく自然な形になる(会社のお金に関するやりとりは一番それを知っている経理担当者が行う、といった感じ)
- その情報を持っているクラスが自分の情報を使用して処理を行う
メリット
- クラス間の関連を少なくすることができる
- 情報を渡しあう必要がなくなる
- 変更に強い疎な結合になる
- 情報を渡しあう必要がなくなる
- 情報のカプセル化を行うことができる
- 必要でない情報は他人に知られなくて済む
適用すべきでない状況
情報を持っているからといってなんでもかんでもやらせて良い、ということではない
- たとえば「売上情報」を保存するのは誰か?情報エキスパートパターンを当てはめると、保存すべき売上情報を持っているのは「売上情報」そのものだから、「売上情報」にデータベース保存ロジックを持たせたらよいのか?