導入
コードは「動けばいい」わけではありません。変更しやすく、読みやすく、壊れにくい コードには、共通する設計の工夫があります。デザインパターンは、その工夫に名前をつけたものです。
説明
デザインパターン は、1994年に出版された書籍『オブジェクト指向における再利用のためのデザインパターン』(通称 GoF本、著者4人組 = Gang of Four)で広く知られるようになりました。GoFは23個のパターンを、目的別に3つのカテゴリに分類しています。
graph TD A["デザインパターン(GoF 23種)"] --> B["生成に関するパターン<br/>Creational"] A --> C["構造に関するパターン<br/>Structural"] A --> D["振る舞いに関するパターン<br/>Behavioral"] B --> B1["Singleton / Factory<br/>Builder など"] C --> C1["Adapter / Decorator<br/>Composite / Facade など"] D --> D1["Strategy / Observer<br/>Template Method / Iterator など"]
- 生成(Creational) … オブジェクトを「どう作るか」に関するパターン。
- 構造(Structural) … オブジェクトを「どう組み合わせるか」に関するパターン。
- 振る舞い(Behavioral) … オブジェクト同士が「どう連携するか」に関するパターン。
パターンを学ぶ利点は3つあります。
- 共通言語になる … 「ここはStrategyで」と言えば、チームに設計意図が一瞬で伝わります。
- 車輪の再発明を避けられる … よくある問題の「検証済みの答え」を再利用できます。
- 設計を見る目が養われる … パターンを知ると、既存のライブラリやフレームワークの設計が読み解けるようになります。
ただし注意点も。パターンは「使うことが目的」ではありません。単純な問題に無理にパターンを当てはめると、かえって複雑になります。「この問題はこのパターンが解こうとしている状況に似ている」と気づいたときに使うものです。
次のレッスンでは、パターンを支える土台である SOLID原則 を振り返ります。