一、工厂模式在开发中的运用  
面试题:
      写一个简单的计算器。
 
代码实现:
抽象一个运算类:
[java]  
package com.qianyan.calcuator;  
public abstract class Operation {  
    //数字一  
    private double num1;  
    //数字二  
    private double num2;  
    public double getNum1() {  
        return num1;  
    }  
    public void setNum1(double num1) {  
        this.num1 = num1;  
    }  
    public double getNum2() {  
        return num2;  
    }  
    public void setNum2(double num2) {  
        this.num2 = num2;  
    }  
    public abstract double getResult();  
}  
创建工厂类:
[java]  
package com.qianyan.factory;  
import com.qianyan.calcuator.AddOperation;  
import com.qianyan.calcuator.Operation;  
import com.qianyan.calcuator.SubtractOperation;  
public class OperationFactory {  
    public static Operation getOperation(String oper){  
        if("+".equals(oper))  
            return new AddOperation();  
        else if("-".equals(oper))  
            return new SubtractOperation();  
        else  
            return null;  
    }  
}  
抽象运算的实现类:
[java] 
package com.qianyan.calcuator;  
public class AddOperation extends Operation{  
    @Override  
    public double getResult() {  
        return this.getNum1() + this.getNum2();  
    }  
}  
[java]  
package com.qianyan.calcuator;  
public class SubtractOperation extends Operation{  
    @Override  
    public double getResult() {  
        return this.getNum1() - this.getNum2();  
    }  
}  
用户类:
[java] 
package com.qianyan.user;  
import java.util.Scanner;  
import com.qianyan.calcuator.Operation;  
import com.qianyan.factory.OperationFactory;  
public class User {  
    public static void main(String[] args) {  
        System.out.println("----小C计算器程序----");  
        Scanner input = new Scanner(System.in);  
        System.out.println("请输入第一个运算数字:");  
        String str1 = input.nextLine();  
        System.out.println("请输入运算符:");  
        String oper = input.nextLine();  
        System.out.println("请输入第二个运算数字:");  
        String str2 = input.nextLine();  
        double num1 = Double.parseDouble(str1);  
        double num2 = Double.parseDouble(str2);  
        Operation opertion = OperationFactory.getOperation(oper);  
        opertion.setNum1(num1);  
        opertion.setNum2(num2);  
        double result = opertion.getResult();  
        System.out.println(str1 + oper + str2 + "=" + result);  
    }  
}  
测试结果:
[java] 
----小C计算器程序----  
请输入第一个运算数字:  
5  
请输入运算符:  
-  
请输入第二个运算数字:  
3  
5-3=2.0