前は、一般的に使用されるデザインパターンについては、以下に説明デザインパターンの原則を説明し
staticファクトリパターン、Factory Methodパターン、Abstract Factoryパターン、シングルトン、ビルダーモード:スキーマを作成します。
構造モデル:ブリッジモード、アダプタモード、Decoratorパターン、プロキシモード、組み合わせモード
行動パターン:テンプレートメソッドパターン、戦略パターン、Observerパターン、責任のチェーン・モード、コマンドモード、来場者のモード
シンプルなファクトリパターン
デザインの原則:
一元管理のクラス、透明性のクラスのユーザークラスを作成するプロセスにクラスを作成します。
例
フルーツエンティティ
パブリッククラスフルーツ{
プライベート文字列名;
プライベート文字列の形;
パブリックフルーツ(){
のsetName( "水果")。
setShape( "无");
}
パブリック文字列のgetName(){
戻り名。
}
公共ボイドのsetName(文字列名){
this.name =名。
}
パブリック文字列getShape(){
形状を返します。
}
公共ボイドsetShape(紐状){
this.shape =形状;
}
}
アップルエンティティ
パブリック クラス Appleが延びフルーツ{ パブリックアップル(){ のsetName( "苹果を" )。 setShape( "圆的" ); } }
オレンジエンティティ
パブリック クラスオレンジザは延び{フルーツ パブリックオレンジ(){ のsetName( "オレンジ" ); setShape( "円" ); } }
前者は、リンゴとオレンジの例を作成し、静的なファクトリを実装していません。
パブリッククラスFruitsController {
公共の静的な無効メイン(文字列[] args){
フルーツりんご=新しいApple();
System.out.println(apple.getName())。
フルーツオレンジ=新しいオレンジ();
System.out.println(orange.getName())。
}
}
staticファクトリを作成します。
パブリッククラスFruitsFactory {
公共の最終的な静的int型のTYPE_APPLE = 1; //苹果
公共最終静的int型TYPE_ORANGE = 2; //橘子
公共フルーツgetFruit(int型){
IF(TYPE_APPLE ==タイプ){
)(新しいAppleを返します。
他の場合}(TYPE_ORANGE ==タイプ){
)(新しいオレンジを返します。
}
)(新しい果実を返します。
}
}
フルーツのエンティティを作成するために、果物の戻り値の型を渡すことによって - タイプは、Appleの作成、タイプ2オレンジの作成があります
果物は、静的なファクトリを使用して作成されました
パブリック クラスFruitsController { 公共の 静的な 無効メイン(文字列[] args)を{ FruitsFactory工場 = 新新FruitsFactory();
//フルーツによって種類のフルーツを作成 果物アップル = ; factory.getFruit(FruitsFactory.TYPE_APPLE) のSystem.out.println(アップル。 getName());
//オレンジにより型オレンジを作成 フルーツオレンジ = factory.getFruit(FruitsFactory.TYPE_ORANGE) のSystem.out.println(orange.getName()); } }
特徴:
管理しやすい工場で作成された1、統一エンティティ、
2、果物の種類に対応した果物のエンティティを作成する前に知っておく必要があります
3、新しいフルーツの工場コードを変更する必要性が高まって:タイプを追加し、ロジックは増加を決定
静的ファクトリクラスによってエンティティタイプを作成する別の代替方法
パブリック クラスFruitsFactory2 { 公共フルーツgetApple(){ 返す 新しい)アップル(; } 公共フルーツgetOrange(){ 戻り 新しい)(オレンジ。 } }
植物によって作成されたエンティティ
パブリック クラスFruitsController { 公共 静的 ボイドメイン(文字列[]引数){ FruitsFactory2工場 = 新しいFruitsFactory2()。 フルーツりんご = factory.getApple(); System.out.println(apple.getName())。 果物オレンジ = factory.getOrange()。 System.out.println(orange.getName())。 } }
特徴:
1は、タイプを判断する必要はありませんが、この方法は、作成するために、対応するエンティティを呼び出すために直接進み、
2は、備考を防止する方法の有用性を示すことができます
3、フルーツ対応する方法の新しいタイプを追加します
要約:
静的なエンティティを作成するには1、工場管理、ユーザーがクラスの使用、透明クラスの作成プロセスを集中することができ、統一された管理エンティティを作成することができます。
2、新規事業とのstaticファクトリパターンは、コードを変更する必要があります
開閉原理 - すべての新しいビジネスが、コードを変更する必要があり、複数の果物を管理するために作成したフルーツのファクトリクラスエンティティ - シングル責任の原則:デザインモードを満たしていない3、