1. 序章

この記事では、Javaの構造設計パターンに焦点を当て、それらが何であるか、およびそれらのいくつかの間のいくつかの基本的な違いについて説明します。

2. 構造設計パターン

Gang Of Four(GoF)によると、デザインパターンは次の3つのタイプに分類できます。

  1. 創造的
  2. 構造
  3. 行動

簡単に言えば、構造パターンはクラスとオブジェクトの構成を扱います。 これらは、オブジェクトの構成と継承を使用して抽象化を作成するさまざまな方法を提供します。

3. プロキシパターン

このパターンを使用して、ファイルや接続などの別のリソースへのインターフェイスとして機能する仲介者を作成します。 このセカンダリアクセスは、実際のコンポーネントの代理を提供し、根本的な複雑さからコンポーネントを保護します。

パターンの詳細な例については、専用の投稿Javaのプロキシパターンを参照してください。

差別化のポイント:

  • プロキシは、参照を保持しているオブジェクトと同じインターフェイスを提供し、データを変更することはありません。 これは、既存のインスタンスの機能をそれぞれ変更および装飾するアダプタおよびデコレータパターンとは対照的です。
  • プロキシは通常、コンパイル時自体に実際のサブジェクトに関する情報を持っていますが、デコレータとアダプタは実行時に注入され、実際のオブジェクトのインターフェイスのみを知っています。

4. デコレータパターン

このパターンは、オブジェクトの動作を強化するのに役立ちます。詳細な概要については、ここで焦点を絞ったチュートリアルを参照してください:Javaのデコレータパターン

差別化のポイント:

  • プロキシパターンとデコレータパターンの構造は似ていますが、意図が異なります。 プロキシの主な目的は使いやすさやアクセスの制御を容易にすることですが、デコレータは追加の責任を負います
  • プロキシパターンとアダプタパターンの両方が、元のオブジェクトへの参照を保持します
  • このパターンのすべてのデコレータは、他のモデルでは不可能な、再帰的に何度でも使用できます。

5. アダプターパターン

Adapterパターンは、他の方法では直接接続できない2つの互換性のないインターフェースを接続するために使用されます。 Adapterは、必要なインターフェースと互換性を持つように、既存のクラスを新しいインターフェースでラップします。

詳細な説明と実装については、専用の投稿Javaのアダプタパターンを参照してください。

アダプタパターンとプロキシパターンの主な違いは次のとおりです。

  • プロキシは同じインターフェイスを提供しますが、アダプタはクライアントと互換性のある別のインターフェイスを提供します
  • アダプターパターンは、ソースコードを変更せずに使用できるように、アプリケーションコンポーネントが設計された後に使用されます。 これは、コンポーネントが設計される前に使用されるブリッジパターンとは対照的です。

6. ブリッジパターン

ブリッジパターンは、抽象化をその実装から切り離すために使用されます。これにより、2つを独立して変更できます。

これは、OOPの原則を使用して、責任をさまざまな抽象クラスに分離するブリッジインターフェイスを作成することを意味します。

詳細な説明と実装については、専用の投稿Javaのブリッジパターンを参照してください。

差別化のキーポイント

  • ブリッジパターンは、アプリケーションが設計される前にのみ実装できます。
  • 抽象化と実装を独立して変更できるようにしますが、アダプタパターンを使用すると、互換性のないクラスを連携させることができます。

7. 結論

この記事では、構造設計パターンといくつかのタイプの違いに焦点を当てました。

いつものように、このチュートリアルの完全な実装は、Githubにあります。