検索
ホームページよくある問題ファクトリメソッドパターンとはどういう意味ですか?

ファクトリメソッドパターンとはどういう意味ですか?

Jun 29, 2020 pm 04:05 PM
ファクトリメソッドパターン

ファクトリ メソッド パターンは、一般的に使用されるクラス作成デザイン パターンです。このパターンの核となる精神は、クラスの変更部分をカプセル化し、パーソナライズされた変更可能な部分を独立したクラスに抽出し、依存関係を通じてこれを実現することです。その目的は、分離、再利用し、後のメンテナンスと拡張を容易にすることです。

ファクトリメソッドパターンとはどういう意味ですか?

パターンの紹介:

ファクトリ メソッド (ファクトリ メソッド) パターンの意味は、次のようなファクトリを定義することです。製品オブジェクトを作成します。インターフェイスは実際の作成をサブクラスに任せます。コア ファクトリ クラスは製品の作成を担当しなくなりました。このようにして、コア クラスは抽象ファクトリ ロールとなり、特定のファクトリ サブクラスが実装する必要があるインターフェイスのみを担当します。さらなる抽象化の利点は、ファクトリ メソッド パターンが特定の工場の役割を変更することなくシステムを動作させることができます。

ファクトリ メソッド パターンは、シンプル ファクトリ パターンの派生であり、シンプル ファクトリ パターンの多くの問題を解決します。まず第一に、「オープンクローズ原則」が完全に実現されており、拡張可能です。第 2 に、製品の結果が複雑な状況には、より複雑な階層構造を適用できます。 [2]

ファクトリ メソッド パターンは、単純なファクトリ パターンを抽象化します。抽象 Factory クラス (抽象クラスおよびインターフェイスにすることができます) があり、このクラスは特定の製品の生産を担当しなくなり、一部の仕様を策定するだけであり、特定の生産作業はそのサブクラスによって完了されます。このモデルでは、多くの場合、工場クラスと製品クラスが順番に対応します。すなわち、抽象工場は抽象製品に対応し、具体工場は特定製品に対応し、この特定工場が対応する製品の生産を担当する。

ファクトリ メソッド パターンは、テンプレート メソッド パターンの最も典型的なアプリケーションです。

ロール構造:

抽象ファクトリ (作成者) ロール: これはファクトリ メソッド パターンの中核であり、アプリケーションとは何の関係もありません。パターンで作成されたオブジェクトのファクトリ クラスはすべて、このインターフェイスを実装する必要があります。

コンクリート ファクトリ (コンクリート作成者) ロール: これは、抽象ファクトリ インターフェイスを実装するコンクリート ファクトリ クラスで、アプリケーションに密接に関連するロジックが含まれており、製品オブジェクトを作成するためにアプリケーションによって呼び出されます。上の図には、BulbCreator と TubeCreator という 2 つの役割があります。

抽象プロダクト (プロダクト) ロール: ファクトリ メソッド パターンによって作成されるオブジェクトのスーパー タイプ。プロダクト オブジェクトの共通の親クラスまたは共通に所有されるインターフェイスです。上の写真では、このキャラクターはライトです。

具体的な製品ロール: このロールは、抽象的な製品ロールによって定義されたインターフェイスを実装します。特定の製品は特定の工場で作られ、それらの間には 1 対 1 の対応関係があることがよくあります。

パターンの適用:

ファクトリ メソッドは、次の 2 つの状況でよく使用されます:

最初の状況は、特定の製品に関するものです。呼び出し元は、どの特定のファクトリー サービスを使用する必要があるかを明確に認識し、特定のファクトリーをインスタンス化し、特定の製品を生成します。これは、Java コレクションの iterator() メソッドの場合に当てはまります。

2 番目のケースでは、製品が必要なだけで、どの工場がその製品を生産しているのか知りたくない、または知る必要もありません。つまり、特定の工場を使用するかどうかの最終決定は、担当者にあります。これらは現在のシステムに基づいており、状況に応じて特定のファクトリがインスタンス化されてユーザーに返され、この意思決定プロセスはユーザーにとって透過的です。

以上がファクトリメソッドパターンとはどういう意味ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

MantisBT

MantisBT

Mantis は、製品の欠陥追跡を支援するために設計された、導入が簡単な Web ベースの欠陥追跡ツールです。 PHP、MySQL、Web サーバーが必要です。デモおよびホスティング サービスをチェックしてください。

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

SublimeText3 Linux 新バージョン

SublimeText3 Linux 新バージョン

SublimeText3 Linux 最新バージョン

SecLists

SecLists

SecLists は、セキュリティ テスターの究極の相棒です。これは、セキュリティ評価中に頻繁に使用されるさまざまな種類のリストを 1 か所にまとめたものです。 SecLists は、セキュリティ テスターが必要とする可能性のあるすべてのリストを便利に提供することで、セキュリティ テストをより効率的かつ生産的にするのに役立ちます。リストの種類には、ユーザー名、パスワード、URL、ファジング ペイロード、機密データ パターン、Web シェルなどが含まれます。テスターはこのリポジトリを新しいテスト マシンにプルするだけで、必要なあらゆる種類のリストにアクセスできるようになります。