工厂模式
用特定的类做创造实例的过程。
package com.factory; public class Operation { /** * 封装 */ protected double numberA; protected double numberB; public double getResult(){ double result=0; return result; } public void setNumberA(double numberA) { this.numberA = numberA; } public double getNumberA() { return numberA; } public void setNumberB(double numberB) { this.numberB = numberB; } public double getNumberB() { return numberB; } } /** * 继承 * @author Administrator * */ class OperationSub extends Operation{ //多态 @Override public double getResult(){ double result=0; result=numberA-numberB; return result; } } class OperationMul extends Operation{ @Override public double getResult(){ double result=0; result=numberA*numberB; return result; } } class OperationDiv extends Operation{ @Override public double getResult(){ double result=0; if(numberB!=0){ result=numberA/numberB; }else{ try { throw new Exception("除数不能为0!"); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } } return result; } } class OperationAdd extends Operation{ @Override public double getResult(){ double result=0; result=numberA+numberB; return result; } }
package com.factory; public class OperationFactory { /* *工厂模式,用一个单独的类来做创造实例的过程 */ public Operation getOperation(char operate){ Operation op=null; switch(operate){ case '+': op=new OperationAdd(); break; case '-': op=new OperationSub(); break; case '*': op=new OperationMul(); break; case '/': op=new OperationDiv(); break; default: System.out.println("未知的运算符号。"); } return op; } }
package com.factory; import java.util.Scanner; public class Test { /** * @param args */ public static void main(String[] args) { Scanner input=new Scanner(System.in); try{ System.out.println("Input number A:"); double numberA=input.nextDouble(); System.out.println("Check Operate (+、-、*、/)"); char operate=input.next().charAt(0); System.out.println("Input number B:"); double numberB=input.nextDouble(); Operation op=new OperationFactory().getOperation(operate); op.setNumberA(numberA); op.setNumberB(numberB); double result=op.getResult(); System.out.println("result is "+result); }catch(Exception e){ System.out.println("a error: "+e.getMessage()); } } }