横たわるデザインパターン------シンプルなファクトリパターン

Factory Methodパターン:Factory Methodパターンは、オブジェクトを作成するためのインタフェースを定義しますが、サブクラスが技術をインスタンス化するクラスを決めましょう。そのサブクラスを遅らせるために、クラスをインスタンス化するために、工場の製造方法。

シンプルなファクトリパターン:

オブジェクトの例としては、もはや新しいオブジェクト()の形式を使用している、関連するクラスは、ユーザーの好みに応じてインスタンス化することはできません。クライアントの場合、追加の特定のクラスに依存します。記載された特定の実施例は単なるプラントに与えられ、プラントは自動的にオブジェクトの特定のインスタンスに戻ります。

 

 

輸入lombok.Data。

@data
パブリック抽象クラスの操作{

プライベートダブルnumberA = 0;
プライベートダブルnumberB = 0;

パブリック抽象二重のgetResult()が例外をスローします。
}

パブリッククラスOperationAdd操作が{延び
@Override
公衆二重のgetResult(){
getNumberA()+ getNumberB()を返します。
}
}
パブリッククラスOperationSub操作が{延び
@Override
公衆二重のgetResult(){
getNumberA()を返す- getNumberBを();
}
}
パブリッククラスOperationMul操作が{延び
@Override
公衆二重のgetResult(){
getNumberA()* getNumberB()を返します。
}
}
パブリッククラスOperationDivは、操作は{拡張
@Override
公共ダブルのgetResult()例外を{スロー
場合(getNumberB()== 0){
新しい例外を投げる( "除数不能为0");
}
getNumberA()/ getNumberB()を返します。
}
}

パブリッククラスOperationFactory { 

パブリックスタティック動作createOperation(文字列動作){
操作operation = NULL;
スイッチ(動作){
場合"+":
動作=新しいOperationAdd()。
ブレーク;
ケース" - ":
操作=新しいOperationSub();
ブレーク;
ケース"*":
操作=新しいOperationMul();
ブレーク;
ケース"/":
動作=新しいOperationDiv()。
ブレーク;
}
操作を返します。
}
}

パブリッククラスTestOperation { 

パブリック静的無効メイン(文字列[] args){
操作operation = OperationFactory.createOperation( "+")。
{試みる
operation.setNumberA(10)。
operation.setNumberB(20)。
System.out.println(operation.getResult())。
}キャッチ(例外e){
e.printStackTrace();
}
}
}

 

おすすめ

転載: www.cnblogs.com/zsmcwp/p/11614431.html