この記事では、Java設計パターンの工場モデル実装方法について説明します。次のように、参照のために共有してください。
工場モデルは、主にオブジェクトを作成するための移行インターフェイスを提供し、柔軟性を向上させる目的を実現するために、オブジェクトを作成する特定のプロセスを保護および分離するようにします。
工場モデルは3つのカテゴリに分かれています。
1)単純な工場モデル:一連の製品の生成を助長しません。
2)工場法:多型工場としても知られています。
3)抽象的な工場モデル:ツールボックスとも呼ばれ、製品ファミリを生産しますが、新製品の生成を助長しません。
1。シンプルな工場モデル
単純な工場モードは、静的ファクトリーメソッドモードとしても知られています。名前を変更することにより、このパターンは非常に単純でなければならないことがわかります。その目的は単純です。オブジェクトを作成するためのインターフェイスを定義します。
シンプルな工場モデルでは、工場クラスが製品クラスへのインスタンス化の中心にあり、交通警官が車両の流れに立っているように、どの製品クラスをインスタンス化する必要があるかを決定し、流れの方向に車両を解放することを決定します。その構成を見てみましょう。
1)工場の役割:これは、特定のビジネスロジックと判断の論理を含むこのモデルの中核です。 Javaでは、しばしば具体的なクラスによって実装されます。
2)抽象製品の役割:一般に、特定の製品または実装されたインターフェイスによって継承される親クラスです。 Javaのインターフェイスまたは抽象クラスによって実装されています。
3)特定の製品の役割:工場クラスによって作成されたオブジェクトは、この役割のインスタンスです。 Javaの具体的なクラスによって実装されています。
2。工場メソッドモデル
ファクトリーメソッドモデルは、単純な工場モデルのさらなる抽象化とプロモーションです。ファクトリーメソッドモデルでは、製品クラスをインスタンス化する必要があるという工場クラスが1つだけでは決定されません。この決定は、抽象工場のサブクラスに引き渡され、作成されます。その構成を見てみましょう。
1)抽象的な工場の役割:これはファクトリーメソッドパターンの中核であり、アプリケーションとは何の関係もありません。これは、特定の工場の役割が実装しなければならないインターフェースまたは継承する必要がある親クラスです。 Javaでは、抽象クラスまたはインターフェイスによって実装されています。
2)特定の工場の役割:特定のビジネスロジックに関連するコードが含まれています。アプリケーションによって呼び出され、対応する特定の製品オブジェクトを作成します。
3)抽象製品の役割:特定の製品または実装されたインターフェイスによって継承される親クラスです。 Javaには、一般的にそれらを実装するための抽象クラスまたはインターフェイスがあります。
4)特定の製品の役割:特定の工場の役割によって作成されたオブジェクトは、この役割のインスタンスです。 Javaの具体的なクラスによって実装されています。
ファクトリーメソッドパターンは、抽象的な工場の役割から継承された複数のサブクラスを使用して、単純な工場パターンの「神の階級」を置き換えます。上記のように、これはオブジェクトの圧力を共有します。そして、これにより、抽象製品の役割と抽象的な工場の役割によって提供される契約に従って生成される限り、新しい製品(つまり、ヌーボーリッチの車)が生成される場合、これにより構造が柔軟になります。既存のコードを変更することなく顧客が使用できます。工場の役割の構造は、開閉の原則にも適合していることがわかります!
コードは次のとおりです。
// abstract製品役割パブリックインターフェイスmovable {void run();} //特定の製品ロールパブリッククラスプレーンモーブル{@override public void run(){system.out.println( "plane ...."); }}パブリッククラスのほうきは、moveable {@override public void run(){system.out.println( "broom ......"); }} //要約工場のパブリックアブストラクトクラスVeherFactory {Abstract Movable Create();} //特別な工場パブリッククラスPlanefactory extends beequrefactory {public Movable create(){return new plane(); }} public class BroomFactory拡張vericefactory {public Movable create(){return new Broom(); }} //テストクラスのパブリッククラステスト{public static void main(string [] args){behilefactory factory = new BromFactory(); Movable M = Factory.Create(); m.run(); }}3。抽象的な工場パターン
コードは次のとおりです
// Abstract Factory Class Public Abstract Class AbstractFactory {Public Abstract Vehicle CreateVehicle();パブリックアブストラクト武器createweapon();パブリックアブストラクトフードCreateFood();} // Concrete Factoryクラス、食品、車両、武器は抽象クラスであり、パブリッククラスDefaultFactoryはAbstractFactory {@Override Public Food CreateFood(){return new Apple(); } @Override public verice createveicle(){return new car(); } @Override Public Weapon CreateWeapon(){return new AK47(); }} //テストクラスパブリッククラステスト{public static void main(string [] args){abstractfactory f = new DefaultFactory();車両v = f.createvehicle(); v.run();武器w = f.createweapon(); w.shoot();食品a = f.createfood(); a.printname(); }}抽象的な工場パターンでは、抽象製品は1つ以上である可能性があるため、1つ以上の製品ファミリが形成されます。 1つの製品ファミリのみの場合、抽象的な工場パターンは実際にファクトリーメソッドパターンに変性します。
要約:
(1)単純な工場パターンは、特定のクラスによって他のクラスのインスタンスを作成することです。親クラスは同じで、親クラスは具体的です。
(2)工場の方法パターンは、パブリックインターフェイスを定義する抽象的な親クラスがあり、サブクラスが具体的なオブジェクトの生成を担当することです。これの目的は、クラスのインスタンス化をサブクラスに遅らせることです。
(3)抽象的な工場パターンは、特定のクラスを指定せずに一連の関連するまたは相互依存オブジェクトを作成するインターフェイスを提供します。複数の製品を持つ階層構造をターゲットにします。ファクトリーメソッドモデルは、製品の階層構造を対象としています。
Java関連のコンテンツについては、このサイトに興味のある読者は、「Javaデータ構造とアルゴリズムのチュートリアル」、「Java操作DOMノードのヒントの概要」、「Javaファイルの要約およびディレクトリ操作のヒント」、「Java Cache操作のヒントの要約」というトピックを見ることができます。
この記事がみんなのJavaプログラミングに役立つことを願っています。