デザインパターンの工場パターン- ファクトリメソッドパターン
ピザプロジェクト - みなさん、こんにちは、汚い汚い爆弾を歓迎し、今日の小さな事業部門は、新しいライブを受けています。
出典:凱歌のJava(kaigejava)
要件:
ピザプロジェクト:
維持しやすいように拡張ピザ品種を容易にするために、簡単に実行できるようにする時間を延長します
ピザ家族のデザインを見てみましょう:
得るために小さな事業部門を分析した後:ピザ焼成(ベーク)、切断(カット)、パッケージ(箱)ピザ原料調製(準備)があるが必要です。どこの変化は、原料を準備する準備ができています。別のピザ異なる原材料、しかし、切削加工と包装を焼きする必要があります。そこで、我々は、原材料の抽象メソッドではなく、具体的な現実を行うためにここにいます。クラス図は以下のものを与えた後:
最初のデザイン:シンプルなファクトリパターンの使用(小さな課麺項目に部門を参照)が見つかりません。なぜ?
ピザより多くの火で、多くの場所はJMに持っています。JM単語場合は、すべての場所が同じコードのような単純なファクトリパターンを作成する必要があり、メンテナンスが非常に面倒であるとき、コピーの多くを作成する必要があります。
第2の設計の選択:Factory Methodパターン。
のは、プロジェクトの構造を見てみましょう:
説明:
1:ドメイン:POJO特定のオブジェクト。彼らはクラスPizzaAbstractから継承されています
北京で始まる、北京のチェーンです。ShanHaiから始まる上海チェーンです。
2と3は、ピザやピザ注文抽象クラスです
4:注文鎖クラスの特定のポイント。彼らはクラスPiazzOrderAbstractから継承されています
5:テストクラス
2つの抽象クラスを見てみましょう。
PizzaAbstractカテゴリ:
PizzaOrderAbstractカテゴリ:
北京greekpizzaの観点:
在来看看BeiJinOrderPizza:
テストカテゴリ:
結果を見ます:
上記のコードは示しを通じて、我々は次を得ます:
Factory Methodパターンのデザイン:
異なるJMショップで特定の機能を実現するため、抽象メソッドに機能的抽象化のピザオブジェクトインスタンス内のプロジェクトピザ、。
Factory Methodパターン:
オブジェクトを作成するための抽象メソッドは、サブクラスによってインスタンス化されるクラスを決定し、定義します。この文から、我々は、サブクラスの延期にFactory Methodパターンがインスタンス化されていること(作成)オブジェクトを知ることができます。
ファクトリメソッドの比較モードとシンプルなファクトリパターン:
シンプルなファクトリパターン:
クラス識別子、ファクトリ・オブジェクトは、特定のクラスのオブジェクトのインスタンスによって得ることができます。次のように工場出荷時のオブジェクトの内部では、クラスのオブジェクトのインスタンスは、次のとおりです。
オブジェクトのインスタンス化、オブジェクトは、工場内にあります。
Factory Methodパターン:
これはアウト抽出し、オブジェクトを作成することです。この方法は、特定のクラスに描かれた、ピザを作成することです。
私たちは、ピザの注文オブジェクトを見てみましょう:
具体的な呼び出しで:
PizzaOrderAbstract bjOder =新しいBeiJinOrderPizza();具象サブクラスを呼び出します。
そして、インスタンス化の目的は、サブクラスで実行されます。
連絡先凱歌 - 「凱歌のJava(kaigejava)
凱歌個人ブログ:www.kaigejava.com。個人的なブログは凱歌プライベートの手紙することができああ〜
新しい容量がある場合Cは、工場やサブクラスから限り新製品として、既存のコードを修正する必要が出ないよう、特定の方法によって、特定のオブジェクトを作成するために、その後の工場から、抽象ファクトリクラスを通じて植物を作成するためのファクトリメソッドパターンサブクラスは友達になることができます。