简单工厂模式

来源:互联网 发布:以下哪件商品淘宝禁售 编辑:程序博客网 时间:2024/06/06 02:35

根据阅读《大话设计模式》,来说说自己对简单工厂模式的理解。把要产品的参数交给工厂而不关心工厂的生产过程,工厂根据产品类型交给对应的员工,由员工按照要求生产出产品的模式叫简单工厂模式。所以需要一个工厂类,一个操作类(员工),一个数据类。

具体代码如下

一、主函数()工厂类实例factory调用getResult方法、

public static void main(String[] args) {
// TODO Auto-generated method stub
OperatorFactory factory = new OperatorFactory();
double a = 2.3;
double b = 4.5;
System.out.println("2.3+4.5 = "+factory.getResult(a, b, "+"));
System.out.println("2.3-4.5 = "+factory.getResult(a, b, "-"));
System.out.println("2.3*4.5 = "+factory.getResult(a, b, "*"));
System.out.println("2.3%4.5 = "+factory.getResult(a, b, "%"));
}

二、工厂类调用操作类的方法

public double getResult(double numberA, double numberB, String opreator) {
double result = 0.0;
switch (opreator) {
case "+":
result = new OperatorAdd().getResult(numberA, numberB, opreator);
break;
case "-":
result = new OperatorSub().getResult(numberA, numberB, opreator);
break;
case "*":
result = new OperatorMul().getResult(numberA, numberB, opreator);
break;
case "%":
result = new OperatorDIv().getResult(numberA, numberB, opreator);
break;
}
return result;
}

三、操作类中的实现方法

public double getResult(double numberA, double numberB, String Opreator){
BigDecimal a = new BigDecimal(numberA);
BigDecimal b = new BigDecimal(numberB);
BigDecimal result = a.multiply(b);
return result.setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue();//将结果转换成保留俩位小数
}

四、数据类


public class Operator {
/**
* 作为计算器数据类(bean)
*/
private double numberA;
private double numberB;
private String Opreator;


public double getNumberA() {
return this.numberA;
}


public void setNumberA(double numberA) {
this.numberA = numberA;
}


public double getNumberB() {
return this.numberB;
}


public void setNumberB(int numberB) {
this.numberB = numberB;
}


public String getOpreator() {
return this.Opreator;
}


public void setOpreator(String Opreator) {
this.Opreator = Opreator;
}
}








0 0
原创粉丝点击