设计模式之简单工厂

来源:互联网 发布:金山画王软件 编辑:程序博客网 时间:2024/06/09 15:19

最近看《大话设计模式》 记录下,方面以后查看。

主要考虑可扩展性和可维护性

UML类图:


工程目录:


package com.burt.simplefactory;import java.util.Scanner;public class Main {/** * @param args */public static void main(String[] args) {// TODO Auto-generated method stubOperatorFactory operatorFactory = new OperatorFactory();Operator operator;Scanner scanner = new Scanner(System.in);System.out.println("请输入运算符");operator = operatorFactory.createOperator(scanner.next());System.out.println("请输入A的值");operator.setA(scanner.nextDouble());System.out.println("请输入B的值");operator.setB(scanner.nextDouble());System.out.println("计算结果为:"+operator.getResult());}}


package com.burt.simplefactory;public class Operator {double A, B;public double getA() {return A;}public void setA(double a) {A = a;}public double getB() {return B;}public void setB(double b) {B = b;}public double getResult(){return 0.0;}}

在添加一个除法就加个case “/"  ,增加一个DivOperator类就ok了,是不是很简单。

package com.burt.simplefactory;public class OperatorFactory {public Operator createOperator(String str){switch (str) {case "+":return new AddOperator();case "-":return new SubOperator();case "*":return new MulOperator();default:break;}return null;}}

package com.burt.simplefactory;public class SubOperator extends Operator {public double getResult(){return A-B;}}

package com.burt.simplefactory;public class MulOperator extends Operator {public double getResult(){<span style="white-space:pre"></span>return A*B;}}

package com.burt.simplefactory;public class AddOperator extends Operator {public double getResult(){return A+B;}}




0 0