4.工厂模式在开发中的运用

来源:互联网 发布:删除旧版windows 编辑:程序博客网 时间:2024/05/29 03:52

写一个简单的计算器。

先看普通的简单计算器
MainClass.java

import java.util.Scanner;public class MainClass {    public static void main(String[] args) {        // 1.接受控制台输入        System.out.println("---计算器程序---");        System.out.println("输入第一个操作数");        Scanner scanner = new Scanner(System.in);        String strNum1 = scanner.nextLine();        System.out.println("输入运算符");        String oper = scanner.nextLine();        System.out.println("输入第二个操作数");        String strNum2 = scanner.nextLine();        double result = 0;        double num1 = Double.parseDouble(strNum1);        double num2 = Double.parseDouble(strNum2);        // 2.进行运算        if ("+".equals(oper)) {            result = num1 + num2;        } else if ("-".equals(oper)) {            result = num1 - num2;        } else if ("*".equals(oper)) {            result = num1 * num2;        } else if ("/".equals(oper)) {            result = num1 / num2;        }        // 3.返回结果        System.out.println(strNum1 + oper + strNum2 + "=" + result);    }}

缺点:完全面向过程设计,缺少代码重用

看运用了工厂模式的计算器
Operation.javapublic 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(); }AddOperation.javapublic class AddOperation extends Operation {      @Override     public double getResult() {         double result = this.getNum1() + this.getNum2();         return result;     } }SubstractionOperation.javapublic class SubtractionOperation extends Operation {      @Override     public double getResult() {         double result = this.getNum1() - this.getNum2();         return result;     }  }OperationFactory.javapublic interface OperationFactory {     public Operation getOperation(); }AddOperationFactory.javapublic class AddOperationFactory implements OperationFactory{      public Operation getOperation() {         return new AddOperation();     }  }SubstractionOperationFactory.javapublic class SubstractionOperationFactory implements OperationFactory{      public Operation getOperation() {         return new SubtractionOperation();     }  }MainClass.javaimport java.util.Scanner; public class MainClass {     public static void main(String[] args) {         //1.接受控制台输入         System.out.println("---计算器程序---");                 System.out.println("输入第一个操作数");         Scanner scanner = new Scanner(System.in);         String strNum1 = scanner.nextLine();          System.out.println("输入运算符");         String oper = scanner.nextLine();          System.out.println("输入第二个操作数");         String strNum2 = scanner.nextLine();                 double result = 0;         double num1 = Double.parseDouble(strNum1);         double num2 = Double.parseDouble(strNum2);          //2.进行运算         if("+".equals(oper)) {             OperationFactory factory = new AddOperationFactory();             Operation operation = factory.getOperation();             operation.setNum1(num1);             operation.setNum2(num2);             result = operation.getResult();         }          //3.返回结果         System.out.println(strNum1 + oper + strNum2 + "=" + result);     } }




原创粉丝点击