一、工厂模式在开发中的运用
面试题:
写一个简单的计算器。
代码实现:
抽象一个运算类:
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(); }
创建工厂类:
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; } }
抽象运算的实现类:
package com.qianyan.calcuator; public class AddOperation extends Operation{ @Override public double getResult() { return this.getNum1() + this.getNum2(); } }
package com.qianyan.calcuator; public class SubtractOperation extends Operation{ @Override public double getResult() { return this.getNum1() - this.getNum2(); } }
用户类:
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); } }
测试结果:
----小C计算器程序---- 请输入第一个运算数字: 5 请输入运算符: - 请输入第二个运算数字: 3 5-3=2.0