Javaのday23-ファクトリメソッドを学ぶ(FactoryMethod)

ファクトリメソッド(FactoryMethod)

  FactoryMethodモードは、オブジェクトのタイミングを作成し、オブジェクトが仕事を作成するために非常に簡単で、オブジェクト指向プログラミングの中で最も広く使われているデザインパターンパターンで非常に重要です。FactoryMethodソリューションは、それが針糸によってアプローチの目的は、この問題にある、戦略、よりよい解決策密結合関係の拡張を提供するように、あなたが遅延にサブクラスを作成するジョブの特定のオブジェクトを作成します。

例:

具体的な実現:BMWインターフェイスを作成するには1.オプション

パッケージday15;
 / ** 
 *製品BMWインタフェース
 * * / 
パブリック・ インタフェースBWM {
     // 製品のプレゼンテーション
     // 方式のような車両のエンジンが
    無効SHOWINFO(); 
} 

/ ** 
 *特定の車両クラスの建設を
 * * / 
クラス   BWM3 実装BWM { 

    公共 SHOWINFO(){
         // TODO自動生成されたスタブメソッド 
        のSystem.out.println( "3台のBMW車" ); 
    } 
} 

クラス   BWM5 実装BWM { 

    公共 SHOWINFO(){
         //自動生成されたスタブ方法、TODO 
        のSystem.out.println( "これはBMW 5台である" ); 
    } 
} 

クラス   BWM7 実装BWM { 

    公共 SHOWINFO(){
         // TODO自動生成されたスタブメソッド、 
        System.out.printlnは( "これは、BMW 7シリーズの車」です); 
    } 
}    
    

2.インターフェイスを再作成BMW車の生産工場

パッケージday15;
 / ** 
 *これは自動車製造工場インターフェース
 * * / 
パブリック インターフェイスBWMFactory { 
    BWM productBWM(); 
} 

/ ** 
 *特定のモデルの製造プラントを達成
 *インタフェースを介して隔離施設、許容される製品によって新しいオブジェクト異なる製品カテゴリの実際の実装、インスタンスのクラス名が他の協力プログラム開発者には影響を与えない変更
 * * / 

クラス BWM3Factory 実装BWMFactory { 

    公共BWM productBWM(){
         // TODO自動生成されたスタブメソッド、 
        System.out.printlnは( "生産BMW 3シリーズ" ); 
        System.out.printlnは( "変換BMW 3シリーズ、名前の3iの" );
         戻り値 新しい新BWM3(); 
    } 
}

    クラス BWM5Factory 実装BWMFactory { 

        公共BWM productBWM(){
             // TODO自動生成されたスタブメソッド 
            のSystem.out.println( "BMW生産ライン5" );
             戻り 新しい新しいBWM5(); 
        } 

    } 
        クラス BWM7Factory 実装BWMFactory { 

            公共BWM productBWM (){
                 // TODO自動生成されたスタブメソッド 
                のSystem.out.printlnを( "BMW生産ライン7" );
                 戻り 新しい新しいBWM7(); 
            } 
        }

3.コール・インタフェースは、BMWの車製造工場によって達成されます

パッケージday15;
 ** / 
 開発者Bの作業、衝撃*開発者がコードを変更しない
 * * / 
パブリック クラスTest2を{
     公共 静的 ボイドメイン(文字列[]引数){ 
     
        BWM B3 = 新しい新しいBWM3Factory()productBWMを(。 ); 
        b3.showInfo(); 
     
        BWM B5 = 新しい新しいBWM5Factory()productBWM();. 
        b5.showInfo(); 
     
        BWM B7 = 新しい新しいBWM7Factory()productBWM();. 
        b7.showInfo(); 
     } 
}

結果を印刷します:

おすすめ

転載: www.cnblogs.com/su-peng/p/12537462.html