Java Category
デザインパターン
パターン名だけでなく適用場面も合わせて整理する。
Category Overview
このカテゴリで扱うテーマ
Eager・Holder・Enum の3方式を比較し、スレッド安全で壊れにくい Singleton を選ぶ。
生成処理をサブクラスに委譲し、呼び出し側を具象クラスから切り離す Factory Method の実装。
関連する複数の Product をファクトリーインターフェースでまとめて生成し、DB 切替などに対応する。
引数が多いコンストラクタを Builder に置き換え、必須・任意の区別と不変オブジェクトの生成を両立する。
コピーコンストラクタと record の withXxx メソッドで、安全にオブジェクトを複製する方法を整理する。
変更できない既存クラスを新しいインターフェースに適合させる Adapter の実装方法を整理する。
通知の種類(緊急・定期)と送信手段(メール・SMS)を独立に拡張できる Bridge 構造の実装。
ファイルシステムを題材に、個々の要素と複合要素を同一インターフェースで透過的に扱う Composite の実装。
テキスト処理を題材に、既存オブジェクトに変更を加えず機能を重ねる Decorator の実装方法を整理する。
SMTP・テンプレート・監査ログの3つのサブシステムを Facade で統合し、呼び出し側に簡潔なインターフェースを提供する。
同一属性のオブジェクトをキャッシュで共有し、大量生成時のメモリ消費を抑える Flyweight の実装。
仮想プロキシによる遅延ロードとアクセス制御プロキシで、実オブジェクトへのアクセスを安全に制御する。
ログフィルタリングを題材に、処理の連鎖を柔軟に組み替えられる Chain of Responsibility パターンを解説する。
テキストエディタを題材に、操作のオブジェクト化と Undo/Redo 履歴管理を Command パターンで実装する。
四則演算の式ツリーを題材に、文法規則をクラスで表現する Interpreter パターンを解説する。
Iterable/Iterator の実装とページング走査を題材に、内部構造を隠蔽して要素を走査する Iterator パターンを解説する。
チャットルームを題材に、オブジェクト間の通信を仲介者に集約する Mediator パターンを解説する。
テキストエディタの Undo を題材に、オブジェクトの状態をスナップショットとして保存・復元する Memento パターンを解説する。
イベント通知システムを題材に、状態変化を複数のリスナーに通知する Observer パターンを解説する。
自動販売機を題材に、状態ごとに振る舞いを切り替える State パターンを解説する。
ソートアルゴリズムの差し替えを題材に、実行時にアルゴリズムを切り替える Strategy パターンを解説する。
データ移行バッチを題材に、処理の骨格を親クラスに定義し、ステップをサブクラスでカスタマイズする Template Method パターンを解説する。
ファイルシステム走査を題材に、データ構造に手を加えずに新しい処理を追加できる Visitor パターンを解説する。