Javaシンプルファクトリモデルの実装
2325 ワード
ファクトリモードは作成モードに属します
単純ファクトリモード
クラス図
ファクトリクラスを使用して、対応するオブジェクトを1つの条件で作成します.
単純ファクトリの欠陥:単純ファクトリで製品を作成する場合は、適切なパラメータを渡す必要があります.正しく渡さないとオブジェクトが取得されません.
改善:複数の方法で異なる製品を作成
クラス図
単純ファクトリモード
クラス図
ファクトリクラスを使用して、対応するオブジェクトを1つの条件で作成します.
//
public interface ICalculation {
double getResult(double numA, double numB);
}
public class CalcAdd implements ICalculation {
@Override
public double getResult(double numA, double numB) {
System.out.println(" ");
return numA + numB;
}
}
public class CalcSubtract implements ICalculation {
@Override
public double getResult(double numA, double numB) {
System.out.println(" ");
return numA - numB;
}
}
/*
* :
* ,
*/
public class Test4Simple {
public static void main(String[] args) {
// String operation = "/";
String operation = "+";
// String operation = "-";
// String operation = "*";
double numA = 182, numB = 33;
ICalculation createCalc = CalcSimpleFactory.createCalc(operation);
double result = createCalc.getResult(numA, numB);
System.out.println(result);
}
}
単純ファクトリの欠陥:単純ファクトリで製品を作成する場合は、適切なパラメータを渡す必要があります.正しく渡さないとオブジェクトが取得されません.
改善:複数の方法で異なる製品を作成
クラス図
public class CalcMultipleFactory {
public static ICalculation produceAdd() {
return new CalcAdd();
}
public static ICalculation produceSubtract() {
return new CalcSubtract();
}
public static ICalculation produceMultiply() {
return new CalcMultiply();
}
public static ICalculation produceDivide() {
return new CalcDivide();
}
}
public class Test4Multiple {
public static void main(String[] args) {
double numA = 182, numB = 33;
ICalculation createCalc = CalcMultipleFactory.produceAdd();
double result = createCalc.getResult(numA, numB);
System.out.println(result);
createCalc = CalcMultipleFactory.produceSubtract();
result = createCalc.getResult(numA, numB);
System.out.println(result);
createCalc = CalcMultipleFactory.produceMultiply();
result = createCalc.getResult(numA, numB);
System.out.println(result);
createCalc = CalcMultipleFactory.produceDivide();
result = createCalc.getResult(numA, numB);
System.out.println(result);
}
}