简单工厂模式的UML图
源码:Operation类
package com.felix;
public abstract class Operation {
double numberA = 0;
double numberB = 0;
public double getNumberA() {
return numberA;
}
public void setNumberA(double numberA) {
this.numberA = numberA;
}
public double getNumberB() {
return numberB;
}
public void setNumberB(double numberB) {
this.numberB = numberB;
}
public abstract double operate();
}
加类:
package com.felix;
public class Add extends Operation {
@Override
public double operate() {
return numberA + numberB;
}
}
减类:
package com.felix;
public class Sub extends Operation {
@Override
public double operate() {
return numberA - numberB;
}
}
乘类:
package com.felix;
public class Mul extends Operation {
@Override
public double operate() {
return numberA * numberB;
}
}
除类:
package com.felix;
public class Div extends Operation {
@Override
public double operate() {
try {
return numberA / numberB;
} catch (Exception e) {
System.out.println("除数不能为空!");
return 0;
}
}
}
工厂类:
package com.felix;
public class OperationFactory {
public static Operation createOperation(char operate){
Operation operation = null;
switch(operate){
case '+' :
operation = new Add();
break;
case '-' :
operation = new Sub();
break;
case '*' :
operation = new Mul();
break;
case '/' :
operation = new Div();
break;
}
return operation;
}
}
客户端:
package com.felix;
public class Client {
/**
* @param args
*/
public static void main(String[] args) {
Operation operation = OperationFactory.createOperation('+');
operation.setNumberA(10);
operation.setNumberB(15);
System.out.println(operation.operate());
}
}