具象クラスを指定することなく生成することを可能にします。使用法コード例Builder複雑なオブジェクトを段階的に構築できます。同じ構築コードを使用して異なる型と表現のオブジェクトを生成することが可能です。サブクラスでは作成されるオブジェクトの型を変更することができます。使用法コード例Prototype既存オブジェクトのコピーをそのクラスに依存することなく可能とします。このインスタンスへの大域アクセス・ポイントを提供します。素朴なシングルトンスレッド・セーフなシングルトン構造に関するパターンAdapter非互換なインターフェースのオブジェクト同士の協働を可能とします。それぞれが独立して開発できるようにします。その木構造がまるで独立したオブジェクトであるかのように扱えるようにします。それらのオブジェクトに新しい振る舞いを付け加えます。簡素化されたインターフェースを提供します。より多くのオブジェクトを収められるようにします。元のオブジェクトへリクエストが行く前か後に別の何かを行うようにすることができます。Responsibilityハンドラーの連鎖に沿ってリクエストを渡すことができます。連鎖内の次のハンドラーに渡すかを決めます。それに関するすべての情報を含む独立したオブジェクトに転換します。取り消し操作を行なうことが可能になります。ツリーなどの実際のデータ表現を表に出さずにコレクションの要素を探索することができます。使用法コード例Mediatorオブジェクト間の混沌とした依存性を削減します。メディエーター・オブジェクトを介してのみの共同作業を強制します。実装の詳細を明かさずに行います。使用法コード例Observer複数のオブジェクトが観察しているオブジェクトに何かイベントが発生した時にそのイベントについて観察しているオブジェクトへ通知を行うサブスクリプションの仕組みを定義することができます。その挙動を変化させます。そのオブジェクトのクラスが変わったかのように見えます。それらのオブジェクトを交換可能にします。サブクラスは構造を変えることなくアルゴリズムの特定のステップを上書きします。使用法コード例Visitorアルゴリズムをその動作対象となるオブジェクトから切り離します。