您的位置:首页 > 其它

设计模式

2015-08-13 10:28 218 查看
一、简单工厂模式

组成要素:各产品父类(即有共性的产品类)、各产品生产类、工厂(根据参数判断加工产品即调用产品生产类)

例子:用面向对象语言实现一个计算机控制台程序,要求输入两个数和运算符合,得到结果。

1.计算器父类:

package designPattern.simpleFactory;

public class Operation {
private double numberA;
private double numberB;

public double getResult(){
double result=0;
return result;
}

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;
}

}

2.加、减、乘、除子类:

package designPattern.simpleFactory;

public class AddOperation extends Operation {
public double getResult(){
double result=0;
result=this.getNumberA()+this.getNumberB();
return result;
}

}

package designPattern.simpleFactory;

public class SubOperation extends Operation{
public double getResult(){
double result=0;
result=this.getNumberA()-this.getNumberB();
return result;
}

}

package designPattern.simpleFactory;

public class MulOperation extends Operation{
@Override
public double getResult() {
double result=0;
result=this.getNumberA()*this.getNumberB();
return result;
}

}

package designPattern.simpleFactory;

public class DivOperation extends Operation{
@Override
public double getResult() {
double result=0;
if(this.getNumberB()==0)
try {
throw new Exception("除数不能为0。");
} catch (Exception e) {
e.printStackTrace();
}
result=this.getNumberA()/this.getNumberB();
return result;
}

}

3.工厂类:

package designPattern.simpleFactory;

public class OperationFactory {
public Operation createOperation(String operate){
Operation operation=null;
switch(operate){
case "+":
operation=new AddOperation();
break;
case "-":
operation=new SubOperation();
break;
case "*":
operation=new MulOperation();
break;
case "/":
operation=new DivOperation();
break;
}
return operation;
}
public static void main (String args[]){

OperationFactory factory=new OperationFactory();
//加法计算
AddOperation addOper=(AddOperation) factory.createOperation("+");
addOper.setNumberA(5);
addOper.setNumberB(2);
double addResult=addOper.getResult();
System.out.println("加法计算结果:"+addResult);
//减法计算
SubOperation subOper=(SubOperation) factory.createOperation("-");
subOper.setNumberA(5);
subOper.setNumberB(2);
double subResult=subOper.getResult();
System.out.println("减法计算结果:"+subResult);
//乘法计算
MulOperation mulOper=(MulOperation) factory.createOperation("*");
mulOper.setNumberA(5);
mulOper.setNumberB(2);
double mulResult=mulOper.getResult();
System.out.println("乘法计算结果:"+mulResult);
//除法计算
DivOperation divOper=(DivOperation)factory.createOperation("/");
divOper.setNumberA(5);
divOper.setNumberB(2);
double divResult=divOper.getResult();
System.out.println("除法计算结果:"+divResult);
}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: