ホームページ  >  記事  >  ファクトリメソッドパターンとはどういう意味ですか?

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

hzc
hzcオリジナル
2020-06-29 16:05:422749ブラウズ

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

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

パターンの紹介:

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

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

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

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

ロール構造:

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

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

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

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

パターンの適用:

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

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

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

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

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