工厂模式

用特定的类做创造实例的过程。

package com.factory;

public class Operation {
    /**
     * 封装
     */
    protected double numberA;
    protected double numberB;
    
    public double getResult(){
        double result=0;
        return result;
    }

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

    public double getNumberA() {
        return numberA;
    }

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

    public double getNumberB() {
        return numberB;
    }

}
/**
 * 继承
 * @author Administrator
 *
 */

class OperationSub extends Operation{
    //多态
    @Override
    public double getResult(){
        double result=0;
        result=numberA-numberB;
        return result;
    }
}
class OperationMul extends Operation{
    @Override
    public double getResult(){
        double result=0;
        result=numberA*numberB;
        return result;
    }
}
class OperationDiv extends Operation{
    @Override
    public double getResult(){
        double result=0;
        if(numberB!=0){
            result=numberA/numberB;
        }else{
            try {
                throw new Exception("除数不能为0!");
            } catch (Exception e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        }
        return result;
    }
}
class OperationAdd extends Operation{
    @Override
    public double getResult(){
        double result=0;
        result=numberA+numberB;
        return result;
    }
}
package com.factory;

public class OperationFactory {
    /*
     *工厂模式,用一个单独的类来做创造实例的过程
     */
    public Operation getOperation(char operate){
        Operation op=null;
        switch(operate){
        case '+':
            op=new OperationAdd();
            break;
        case '-':
            op=new OperationSub();
            break;
        case '*':
            op=new OperationMul();
            break;
        case '/':
            op=new OperationDiv();
            break;
        default:
            System.out.println("未知的运算符号。");
        }
        return op;
    }

}
package com.factory;

import java.util.Scanner;

public class Test {

    /**
     * @param args
     */
    public static void main(String[] args) {
        Scanner input=new Scanner(System.in);
        try{
            System.out.println("Input number A:");
            double numberA=input.nextDouble();
            System.out.println("Check Operate (+、-、*、/)");
            char operate=input.next().charAt(0);
            System.out.println("Input number B:");
            double numberB=input.nextDouble();
            Operation op=new OperationFactory().getOperation(operate);
            op.setNumberA(numberA);
            op.setNumberB(numberB);
            double result=op.getResult();
            System.out.println("result is "+result);
        }catch(Exception e){
            System.out.println("a error: "+e.getMessage());
        }

    }

}

 

posted @ 2016-04-30 00:07  guodaxia  阅读(257)  评论(0编辑  收藏  举报