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号
浙公网安备 33010602011771号