设计的流程:
1.创建一个算法父类,定义基本的属性和方法
2.通过继承算法父类,创建各自的算法子类,分别实现其方法
3.创建工厂类,通过在该工厂类型中,判断需要生产什么算法,new对应的算法类
4.通过java的多态,使用工厂类来进行计算算法。
代码如下:
算法父类:
package com.diesignpatterns.simplefactory;
/*
* 计算的父类
*/
public class Operation {
//封装父类的属性
private double numberA = 0;
private double numberB = 0;
public double getNumberA() {
return numberA;
}
public void setNumberA(double numberA) {
this.numberA = numberA;
}
public double getNumberB() {
return numberB;
}
public void setNumberB(double numberB) {
this.numberB = numberB;
}
public double getGesult(){
double result = 0;
return result;
}
}
算法子类:
package com.diesignpatterns.simplefactory;
/*
*加法
*/
public class OperationAdd extends Operation {
public double getGesult(){
double result = 0;
result=super.getNumberA()+super.getNumberB();
return result;
}
}
package com.diesignpatterns.simplefactory;
/*
* 减法
*/
public class OperationSub extends Operation {
public double getGesult(){
double result = 0;
result=super.getNumberA()-super.getNumberB();
return result;
}
}
工厂类:
package com.diesignpatterns.simplefactory;
//算法工厂用来获取算法对象
public class OperationFactory {
//定义一个静态方法用来获取算法
public static Operation createOperation(String opertionName){
Operation operation = null;
/*
* switch在java 7以前支持int类型,由于java的向上转型,所以站位小于int的类型都可以使用,
* 在java 7 后可以使用String类型
* 所以,可以使用的类型分为:byte、short、char、int、String
*/
switch (opertionName) {
case "+":
operation=new OperationAdd();
break;
case "-":
operation=new OperationSub();
break;
/*
* 使用switch 是必现使用default;哪怕里面没有内容
*/
default:
break;
}
return operation;
}
}
测试类:
package com.diesignpatterns.simplefactory;
public class OperationResult {
public static void main(String[] args) {
Operation operation=OperationFactory.createOperation("-");
operation.setNumberA(1);
operation.setNumberB(2);
double result = operation.getGesult();
System.out.println(result);
}
}