23のパターンを、
冒険するように学ぼう。
Java / Python / TypeScript の3言語サンプル、UML 風の概念図、 そしてゲーム性のあるクイズ。GoF が体系化した 23 のパターンを、 退屈せずに身につけられる学習サイトです。
生成に関するパターン
シングルトン
『この役職は、世界に1人だけ』とコンパイラに約束させる。学級委員もWi-Fiルーターも、増えると揉める。
ファクトリメソッド
『何を作るか』はサブクラスにお任せ。注文を受け付ける本部と、実際に作る各支店の関係。
抽象ファクトリ
『北欧スタイルで全部揃えて』──ソファとテーブルとランプを別々の店で買わずに、テーマで一括コーデする家具屋さん。
ビルダー
サブウェイの注文だ。『パン → 具 → ソース → トッピング』と段階を踏み、最後に「いただきます」で完成。
プロトタイプ
ハンコと同じ。1個だけ職人技で作って、あとは押すだけ。0から彫り直す必要はない。
構造に関するパターン
アダプタ
海外旅行のコンセント変換プラグ。形が合わない者同士を、それぞれ手を加えずにつなぐ。
ブリッジ
リモコンとテレビ。操作する側と中身を別物として独立に増やせる。組合せ爆発を防ぐ設計の知恵。
コンポジット
ファイルもフォルダも、まとめて『中身のサイズが分かるもの』として扱う。個と集合の境界を消す。
デコレータ
ピザのトッピングだ。生地はそのまま、上にチーズ・サラミ・バジル……後乗せで好みに育てる。
ファサード
ホテルのコンシェルジュ。中で誰がどう動いてるかは知らなくていい、頼むのは『窓口の1人』だけ。
フライウェイト
森に木を100万本生やしたいけど、そんなメモリは無い。── じゃあ『木の種』は1個だけ、座標だけ毎回渡そう。
プロキシ
本人の代わりに受付が立つ。アポ取り・身分確認・取次ぎを代行して、本人は本来の仕事に集中。
振る舞いに関するパターン
責任の連鎖
リクエストのリレー走者。誰かが処理を引き受けるまで、次の人にバトンが渡されていく。
コマンド
操作を『注文票』にして渡す。ファミレスのオーダーを思い出せ ── あれが Undo もキューも履歴もこなす。
インタプリタ
ミニ言語の通訳係。検索フィルタやルール式を、文法のクラス階層に翻訳して評価する。
イテレータ
本のしおり。中身がリストでも木でもデータベースでも、『次のページめくって』だけで読み進められる。
メディエーター
管制塔の発想だ。飛行機同士が直接喋ったらカオス。代わりに管制塔が全部の調整を引き受ける。
メメント
ゲームのセーブポイント。中身は本人にしか読めないけど、いつでもその時点に戻せる。
オブザーバー
YouTubeのチャンネル登録。新しい動画が出たら、登録者全員のスマホに通知が飛ぶ。
ステート
信号機。青なら『進め』、赤なら『止まれ』、黄色なら『注意して止まれ』── 状態が変われば、振る舞いも丸ごと変わる。
ストラテジー
ナビアプリの『徒歩 / 車 / 電車』切替。同じ目的地に対し、別のアルゴリズムを実行時に差し込む。
テンプレートメソッド
レシピは同じ手順、具材だけが違う。親が骨格を握り、子が肉付けを担当する。
ビジター
健康診断の検査項目を増やすイメージ。患者(オブジェクト)には手を加えず、検査員(操作)だけを増やしていく。