《设计模式系列》---简单工厂模式

/**
 * @author stefanie zhao
 * @date 2014-8-13 下午03:10:46
 */
public class Operation {
    protected double a = 0;
    protected double b = 0;

    public double getResult() throws Exception {
        return 0;
    }

    /**
     * @return the a
     */
    public double getA() {
        return a;
    }

    /**
     * @param a
     *            the a to set
     */
    public void setA(double a) {
        this.a = a;
    }

    /**
     * @return the b
     */
    public double getB() {
        return b;
    }

    /**
     * @param b
     *            the b to set
     */
    public void setB(double b) {
        this.b = b;
    }

}

/**
 * @author stefanie zhao
 * @date 2014-8-13 下午03:19:10
 */
public class OperationFactory {

    public static Operation createOperate(char 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;
    }
}

/**
 * @author stefanie zhao
 * @date 2014-8-13 下午03:12:22
 */
public class OperationAdd extends Operation {

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

/**
 * @author stefanie zhao
 * @date 2014-8-13 下午03:12:22
 */
public class OperationDiv extends Operation {

    public double getResult() throws Exception {
        double result = 0;
        if (b == 0)
            throw new Exception("除数不能为0");
        result = a / b;
        return result;
    }
}

/**
 * @author stefanie zhao
 * @date 2014-8-13 下午03:12:22
 */
public class OperationMul extends Operation {

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

/**
 * @author stefanie zhao
 * @date 2014-8-13 下午03:12:22
 */
public class OperationSub extends Operation {

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

public class Main {

    /**
     * @throws Exception
     * @Description: TODO
     * @param @param args
     * @return void
     * @throws
     */
    public static void main(String[] args) throws Exception {
        Operation oper = OperationFactory.createOperate('/');
        oper.a = 1;
        oper.b = 2;
        double result = oper.getResult();
        System.out.println(result);
    }

}


你可能感兴趣的:(java,设计模式,简单工厂模式)