
简单的工厂模式
通过工厂类创建具有条件的对应对象

//业务功能
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);
}
}

有几个概念: 抽象工厂工厂模式类图,物理工厂,抽象产品,物理产品
抽象工厂: 定义用于创建产品的抽象方法
物理工厂: 专门创建哪种产品
抽象产品: 接口或基类
物理产品: 实现特定功能或派生
类图
本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/jisuanjixue/article-186154-1.html
以乱放屁罪判处3年有期徒刑