设计模式之简单工厂模式

来源:互联网 发布:灯光编程教学视频 编辑:程序博客网 时间:2024/05/01 16:52

简单工厂模式的作用:用一个工厂类,来负责创建实例对象

我通过一个简单的模拟计算器的功能来说明简单工厂模式的使用:

创建一个Operation类,这个类作为基类,提供两个变量用来接收我们的输入参数,提供一个用来返回计算结果的方法

public class Operation {private Double numA;private Double numB;public Double getNumA() {return numA;}public void setNumA(Double numA) {this.numA = numA;}public Double getNumB() {return numB;}public void setNumB(Double numB) {this.numB = numB;}public  Double getResult(){Double result = 0.0;return result;}}

创建加、减、乘、除四个基本的计算方法的类,继承Operation类:

/** * 加法类 * @author thinkpad * */class OperationAdd extends Operation{@Overridepublic Double getResult() {Double result = 0.0;result = getNumA()+getNumB();return result;}}/** * 减法类 * @author thinkpad * */class OperationSub extends Operation{@Overridepublic Double getResult() {Double result = 0.0;result = getNumA()-getNumB();return result;}}/** * 乘法类 * @author thinkpad * */class OperationMul extends Operation{@Overridepublic Double getResult() {Double result = 0.0;result = getNumA()*getNumB();return result;}}/** * 除法类 * @author thinkpad * */class OperationDiv extends Operation{@Overridepublic Double getResult() {Double result = 0.0;if(getNumB()==0){throw new RuntimeException("除数不能为0");}result = getNumA()/getNumB();return result;}}
接下来创建工厂类,用来负责创建不同运算的对象:

public class CreateFactory {public static Operation createFactory(String operate){Operation oper = null;if(operate.equals("+")){oper = new OperationAdd();}else if(operate.equals("-")){oper = new OperationSub();}else if(operate.equals("*")){oper = new OperationMul();}else if(operate.equals("/")){oper = new OperationDiv();}return oper;}public static void main(String[] args) {Scanner input = new Scanner(System.in);System.out.println("请输入数字A");Double numA = input.nextDouble();System.out.println("请输入操作");String oper = input.next();System.out.println("请输入数字B");Double numB = input.nextDouble();Operation create = new Operation();create =CreateFactory.createFactory(oper); //根据我们的操作从工厂类中创建对应的实例对象create.setNumA(numA);create.setNumB(numB);double result = create.getResult();System.out.println(numA+" "+oper+""+numB+"="+result);}}



原创粉丝点击