1.简单工厂模式
实现计算器功能
0.UML类图

1.运算抽象类,提供基本属性和虚方法
**
* @author makex
* @note 运算抽象类,提供基本属性和虚方法
* @tip 抽象类就是来被继承的,可以在子类中重写方法
* @create 2017-06-12
*/
public abstract class Operation {
private double numA;
private double numB;
public double getNumA() {
return numA;
}
public void setNumA(double numA) {
this.numA = numA;
}
public double getNumB() {
return numB;
}
public void setNumB(double numB) {
this.numB = numB;
}
public abstract double getResult();
}
2.四种具体子类重写父类中的计算方法
/**
* @author makex
* @note 具体的加法子类
* @create 2017-06-12
*/
public class OperationAdd extends Operation{
@Override
public double getResult(){
return getNumA() + getNumB();
}
}
/**
* @author makex
* @note 具体的减法子类
* @create 2017-06-12
*/
public class OperationSub extends Operation{
@Override
public double getResult(){
return getNumA() - getNumB();
}
}
/**
* @author makex
* @note 具体的乘法子类
* @create 2017-06-12
*/
public class OperationMul extends Operation {
@Override
public double getResult() {
return getNumA() * getNumB();
}
}
/**
* @author makex
* @note 具体的除法子类
* @create 2017-06-12
*/
public class OperationDiv extends Operation {
@Override
public double getResult() {
if(getNumB() == 0){
System.out.println("除数不能为0");
return 0;
}
return getNumA() / getNumB();
}
}
3.简单工厂类,根据运算符创建子类对象,利用多态实现数值的计算
/**
* @author makex
* @note 简单运算工厂类
* @create 2017-06-12
*/
public class OperationFactory {
public static Operation createOperation(String operate){
Operation oper = null;
switch (operate){
case "+":
oper = new OperationAdd();
break;
case "-":
oper = new OperationSub();
break;
case "*":
oper = new OperationMul();
break;
case "/":
oper = new OperationDiv();
break;
}
return oper;
}
}
4.测试类
/**
* @author makex
* @note 工厂模式测试类
* @tip 只需要输入运算符,工厂就能实例化出合适的对象,通过多态,计算具体结果
* @create 2017-06-12
*/
public class TestClass {
public static void main(String[] args) {
Operation oper = OperationFactory.createOperation("+");
oper.setNumA(1);
oper.setNumB(2);
System.out.println(oper.getResult());
}
}
http://www.cnblogs.com/makexu/

浙公网安备 33010602011771号