Javaの工場出荷時のデザインパターン
工場の設計パターン上のI、
説明:スキーマを作成するために、デザインモードが属し、それはオブジェクトを作成するための最良の方法を提供します。ファクトリモードでは、私たちは、あなたがオブジェクトを作成するときに論理を作成するには、クライアントを公開しません。
そして、共通のインタフェースを使って、新しく作成されたオブジェクトを指すようにします。
意図:サブクラスへの遅延を作成するプロセスとなるよう作成されたオブジェクトのインタフェースを定義し、サブクラスはクラスファクトリのどのインスタンスを決定させ、工場モデル。
主に解決するために:インターフェースオプションの主な問題を。
ときに使用する:あなたは、私たちは間違いなく計画異なる条件で異なるインスタンスを作成するとき。
解決方法:サブクラスは、ファクトリインタフェースを実装してみましょう、それが返品された製品の抽象的です。
カテゴリー:一般的な、単純な工場シンプル工場、プラント、より簡単な方法で、静的メソッドは、複数の工場のデザインパターン。
第二に、コードの実装
シンプルファクトリー:あるインスタンスを作成したのと同じインターフェイスクラスを達成するために、ファクトリクラスを作成します。まず、図を見てください
たとえば、次のように:(私たちは、電子メールやSMSを送信する例を与えます)
まず、両者の間の共通のインタフェースを作成します。
送信者
パッケージpers.hupo.hupow.factory; / ** * @author HUPO *インタフェース作成 * * / パブリック インターフェイス{センダ 無効(送信します); }
第二に、実装クラスを作成します。
メール送信者
パッケージpers.hupo.hupow.factory。 / ** * @author HUPO *送信者实现类 * * / パブリック クラス MailSenderのは、実装のSender { @Override 公共 ボイド送信(){ System.out.printlnは( "このメールメッセージを" ); } }
SmsSender
パッケージpers.hupo.hupow.factory。 / ** * @author HUPO *送信者实现类 * * / パブリック クラス SmsSenderは実装し、送信者{ @Override 公共 ボイド送信(){ System.out.printlnは( "このSMSメッセージを" ); } }
最後に、工場のカテゴリを構築します:
パッケージpers.hupo.hupow.factory。 / ** * @author HUPO *工厂类 * * / パブリック クラスSendFactory { 公衆送信者の農産物(文字列型){ 場合( "メール" .equals(タイプ)){ 返す 新しい(MailSenderのを)。 } であれば( "SMS" .equals(タイプ)){ 戻り 新しい)(SmsSenderします。 } 戻り ヌル。 } }
試験方法
パッケージpers.hupo.hupow.factory。 パブリック クラスFactoryTest { 公共 静的 ボイドメイン(文字列[]引数){ SendFactory sendFactory = 新しいSendFactory()。 送信者、送信者 = sendFactory.produce( "SMS" ); sender.Send(); } }
出力: