最近看《大话设计模式》 记录下,方面以后查看。
主要考虑可扩展性和可维护性
UML类图:
工程目录:
package com.burt.simplefactory;
import java.util.Scanner;
public class Main {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
OperatorFactory 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;
}
}