デザインパターン シンプルファクトリー

巴扎黑
リリース: 2017-06-26 09:42:42
オリジナル
1399 人が閲覧しました

シングルトン モードに関する前回の記事に続き、いよいよデザイン パターンについて書き続けたいと思います。最も単純なファクトリ パターンから始めましょう。このデザイン パターンは非常にシンプルで、最も一般的に使用されています (これはそうではありません)。シンプルであればあるほど、敷居が低いほど好感が持てます)。

コンセプト (Baidu百科事典を恥知らずにコピーしていることをご容赦ください):

シンプル ファクトリ パターンは、静的ファクトリ メソッド パターンとも呼ばれる作成パターンですが、23 の GOF デザイン パターンの 1 つではありません。シンプルなファクトリ パターンでは、ファクトリ オブジェクトを使用して、プロダクト クラスのどのインスタンスを作成するかを決定します。シンプル ファクトリ パターンは、ファクトリ パターン ファミリの中で最も単純かつ最も実用的なパターンであり、さまざまなファクトリ パターンの特別な実装として理解できます。

ここで言われていることは非常に明確です。これが単純なファクトリの本質です。具体的な UML クラス図は次のとおりです。これが私のオンライン ツール プロセスです。もちろん、たくさんの絵を描く必要がある場合は、お金を出して支援してください。

このクラス図は 3 つの部分で構成されており、1 つはファクトリ クラス、2 つ目は IProduct インターフェイス、3 つ目は特定の製品 A と B です。

具体的なコードは次のとおりです

製品インターフェース:

public interface IProduct {void meathod();
}
ログイン後にコピー

特定の製品:

public class ProductA implements IProduct {public void meathod() {
        System.out.printf("产品A");
    }
}
ログイン後にコピー

public class ProductB implements IProduct {public void meathod() {
        System.out.printf("产品B");
    }
}
ログイン後にコピー
ファクトリー:

public class Creator {public static IProduct createProduct(String productName) {if (null == productName) {return null;
        } else if ("A".equals(productName)) {return new ProductA();
        } else if ("B".equals(productName)) {return new ProductB();
        }return null;
    }public static void main(String[] args) {
        IProduct productA = Creator.createProduct("A");
        productA.meathod();

        IProduct productB = Creator.createProduct("B");
        productB.meathod();
    }
}
ログイン後にコピー
出力: 製品A 製品B

具体例:
このような単純なモデルは比較的一般的です。私たちのプロジェクトを例に挙げると、ほとんどのインターフェースは同じですが、特定のフィールドと詳細が異なります。クレジットの申請に必要なのは、個人のプライバシー情報だけです。各企業が必要とするものはほぼ同じですが、個々の情報は異なります。これはファクトリーモデルに非常に適しています。

長所と短所:

長所: デカップリング、カプセル化の支援。

短所: クライアントの複雑さが増し、サブファクトリーの拡張には役に立たない

実際、シンプルなファクトリー・パターンの本質は、それを実装するかどうかを選択することです。

あれこれ言っておきましょう。

以上がデザインパターン シンプルファクトリーの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート