GoF のデザインパターン

デザインパターンとは,典型的な課題に対する効果的な設計パターンのことで,代表的なデザインパターンに,GoF (Gang of Four) がある。四人の男性が持ち寄ったデザインパターンを体系化したことから,こう呼ばれる。

23 種類のデザインパターンからなり,それらは,オブジェクトの生成に関するパターン,オブジェクトの構造に関するパターン,オブジェクトの振る舞いに関するパターンの三つに分類される。

デザインパターンのはじまり

デザインパターンが一般的に知られるようになったのは,その名も「オブジェクト指向における再利用のためのデザインパターン」(原題 “Design Patterns: Elements of Reusable Object-Oriented Software”)というタイトルの書籍が 1995 年に発刊されたことがきっかけである。

この書籍は,エリック・ガンマ (Erich Gamma) 氏,リチャード・ヘルム (Richard Helm) 氏,ラルフ・ジョンソン (Ralph E. Johnson) 氏,ジョン・ブリシデス (John M. Vlissides) 氏という 4 名の技術者によって共同で書かれた。

この 4 名の技術者は,親しみを込めて GoF(Gang of Four)と呼ばれており,彼らが発表した 23 種類のデザインパターンは「GoF のデザインパターン」と呼ばれている。

デザインパターン

デザインパターンは,変更に強く問題が起きにくいプログラムを作成するために,クラス構造や機能をパターン化した「設計のひな形」である。オブジェクト指向におけるデザインパターンは,システムの構造や機能について,典型的な設計上の問題とその解決策を示し,再利用できるようにしたものである。

GoF のデザインパターン

GoF のデザインパターンは,典型的に現れる課題に対して,3 ~ 5 つ程度のクラスを組み上げて作る解法を示すもので,課題と解決策,適用した場合の効果と考慮点がまとめられ,UML の図やサンプルコードも一覧に示される。

GoF のデザインパターンの一覧を示す。

No.カテゴリパターン名目的
1デザインパターンに慣れるIterator1 つ 1 つを数え上げる
2Adapterひと皮かぶせて再利用
3サブクラスに任せるTemplate Method具体的な処理をサブクラスに任せる
4Factory Methodインスタンス作成をサブクラスに任せる
5インスタンスを作るSingletonたった 1 つのインスタンス
6Prototypeコピーしてインスタンスを作る
7Builder複雑なインスタンスを組み立てる
8Abstract Factory関連する商品を組み合わせて製品を作る
9分けて考えるBridge機能の階層と実装の階層を分ける
10Strategyアルゴリズムをごっそり入れ替える
11同一視Composite容器と中身の同一視
12Decorator飾り枠と中身の同一視
13構造を渡り歩くVisitor構造を渡り歩きながら仕事をする
14Chain of Responsibility責任のたらい回し
15シンプルにするFacadeシンプルな窓口
16Mediator相手は相談役 1 人だけ
17状態を管理するObserver状態の変化を通知する
18Memento状態を保存する
19State状態をクラスとして表現する
20無駄をなくすFlyweight同じものを共有して無駄をなくす
21Proxy影武者を前面に立たせる
22クラスで表現するCommand命令をクラスにする
23Interpreter文法規則をクラスで表現する
表 GoF のデザインパターン

ストラテジパターン

デザインパターンの中のストラテジパターンを用いて,帳票出力のクラスを図のとおりに設計した。この設計は,新規フォーマット用のアルゴリズムの追加が容易である。

図 帳票出力のクラス

参考文献

  • 平澤 章,「オブジェクト指向でなぜつくるのか 知っておきたいプログラミング,UML,設計の基礎知識」,日経 BP 社,2004年6月7日


更新履歴

  • 2023年2月11日 新規作成
  • 2023年2月19日 デザインパターン,ストラテジパターンの説明を追加
  • 2024年4月29日 アフェリエイトを更新

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です