デザインパターン(GoF)とは?3系統と「万能ではない」

公開: 更新: カテゴリ: マネジメント系

30秒で結論

デザインパターン(GoF)とは(全体像)

デザインパターンとは、プログラムの設計で「よく出てくる問題」に対する、定番の解決の型(やり方)を集めたものだ。

そのうち有名なのが、GoF(ゴフ)のデザインパターン。GoFは「Gang of Four(ギャング・オブ・フォー=4人組)」の略で、4人の研究者がまとめたものを指す。全部で23個のパターンが整理されている。

ねらいは、先人の知恵を再利用すること。同じような設計のなやみは、過去にだれかが解いている。その定番の型を使えば、いちから考えずにすみ、直しやすい設計になる。要するに、設計の「お手本集」だ。


詳しく:3系統と「万能ではない」

ここが心臓部。23個のパターンは、3つの系統に分かれる。表で押さえよう。

GoFパターンの3系統

系統何についての型か
生成オブジェクト(部品)の「作り方」についての型
構造部品どうしの「組み立て方」についての型
振舞い部品どうしの「連携のしかた」についての型

「作り方」「組み立て方」「連携のしかた」という、設計の3つの角度で整理されている、と覚えるとよい。代表的なものに、1つだけ作る型(シングルトン)や、作り方をまとめる型(ファクトリ)などがある。名前を全部覚える必要はなく、3系統で整理されていることをまず押さえよう。

ここで注意点が2つ。

1つ目。GoFのパターンが「設計の型のすべて」ではない。GoFは23個だが、ほかにもいろいろなパターンがある。「GoFがすべて」と思い込むと誤りだ。

2つ目。デザインパターンは、必ず使うものではない。場面に合わないのに無理に当てはめると、かえって複雑になる。合う場面で使うのがコツ。「いつも必ず使うべき」と思い込むのも誤りだ。

わかりやすく言い換えると

身近なたとえで整理しよう。

デザインパターンは、「料理の定番レシピ集」のイメージ。よくある料理(よくある設計のなやみ)には、うまくいく定番の作り方がある。それを集めたものだ。

3系統は、「作り方・組み立て方・連携のしかた」という3つの角度。つまり、設計のどの場面の型か、で分けてある。

「必ず使うべき」というのは思い込み。合う場面で選んで使うのであって、つまり、レシピは必要なときに開けばよい、ということだ。


試験のツボ

🔴 一番出る:デザインパターンの正体

①よく出る設計の問題への、定番の解決の型を集めたもの

②GoF(4人組)がまとめた23個が有名

🔴 次に出る:23個・3系統

①全部で23個のパターン

②生成・構造・振舞いの3系統に分かれる

🟡 押さえると安定:万能ではない

①GoFがすべてではない(ほかのパターンもある)

②必ず使うのではなく、合う場面で使う


よくある間違い

「GoFの23個が、設計の型のすべてだ」→ ✗  GoFは23個だが、ほかにもパターンはある。すべてではない。

「デザインパターンは、どんなときも必ず使うべきだ」→ ✗  合わない場面で無理に使うと複雑になる。合う場面で選んで使う。

「デザインパターンは、特定の言語でしか使えない命令だ」→ ✗  パターンは設計の考え方(型)。言語に縛られる命令ではない。


試験での出題パターン

実際の問題でたしかめてみよう。

オリジナル問題1(デザインパターンの正体)

📝 オリジナル問題 1 デザインパターンの正体

デザインパターン(GoF)に関する次の記述のうち、最も適切なものはどれか。

  1. 社員の出退勤を記録して、毎月の給与を計算するためのしくみである
  2. 取引先へ毎月の請求書を郵送する、決まった事務作業のことを指す
  3. 完成したシステムを宣伝して、より多く売るための広告活動である
  4. よく出る設計の問題に対する、定番の解決の型を集めたものである
プロネコ
プロネコ 解答・解説

解答は 4 だよ。

デザインパターンは、よく出る設計の問題への、定番の解決の型を集めたものだよ。設計のお手本集だね。

選択肢1は給与計算、選択肢2は請求書の事務、選択肢3は広告で、どれも違うよ。

選択肢判定理由
1給与計算のしくみではない
2請求書の事務の話
3広告活動ではない
4定番の解決の型を集めたもので正しい

オリジナル問題2(23個・3系統)

📝 オリジナル問題 2 23個と3系統

GoFのデザインパターンの構成として、最も適切なものはどれか。

  1. 23個のパターンが、生成・構造・振舞いの3系統に分かれている
  2. 朝・昼・夜という、1日の3つの時間帯ごとに分かれているものだ
  3. 北・南・西という、3つの方角ごとに分かれているものだとされる
  4. 売上・費用・利益という、決算で使う3つの数字に分かれている
プロネコ
プロネコ 解答・解説

解答は 1 だよ。

GoFのパターンは、23個が、生成・構造・振舞いの3系統に分かれているよ。作り方・組み立て方・連携のしかた、の3つだね。

選択肢2の時間帯、選択肢3の方角、選択肢4の決算の数字は、いずれも誤りだよ。

選択肢判定理由
123個・生成構造振舞いの3系統で正しい
2時間帯のことではない
3方角のことではない
4決算の数字ではない

オリジナル問題3(万能ではない)

📝 オリジナル問題 3 デザインパターンの使い方

デザインパターンの使い方に関する次の記述のうち、最も適切なものはどれか。

  1. どんなときも必ず使うべきもので、使わない設計は誤りだとされている
  2. 社員の給与を計算するときだけに使う、経理専用の型のことである
  3. すべての場面で使うのではなく、合う場面を選んで使うものである
  4. 取引先へ請求書を郵送する事務のときだけに使う型のことである
プロネコ
プロネコ 解答・解説

解答は 3 だよ。

デザインパターンは、すべての場面で使うのではなく、合う場面を選んで使うものだよ。無理に当てはめると、かえって複雑になるんだ。

選択肢1の「必ず使うべき」、選択肢2の給与計算、選択肢4の請求書の事務は、いずれも誤りだよ。

選択肢判定理由
1必ず使うものではない
2給与計算専用ではない
3合う場面を選んで使うで正しい
4請求書の事務専用ではない

まとめ

押さえどころ

次に学ぶ


執筆: SikakuQuest編集部

勉強は、クエストになった。

資格の勉強を、冒険に変えるRPG学習アプリ

App Storeで見る