简单工厂模式的UML图
源码:Operation类
Java代码
packageOperation;
publicabstractclassOperation {
doublenumberA=0;
doublenumberB=0;
publicdoublegetNumberA() {
returnnumberA;
}
publicvoidsetNumberA(doublenumberA) {
this.numberA = numberA;
}
publicdoublegetNumberB() {
returnnumberB;
}
publicvoidsetNumberB(doublenumberB) {
this.numberB = numberB;
}
publicabstractdoubleoperate();
}
package Operation;
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();
}
加类:
Java代码
packageOperation;
publicclassAddextendsOperation {
@Override
publicdoubleoperate() {
returnnumberA+numberB;
}
}
package Operation;
public class Add extends Operation {
@Override
public double operate() {
return numberA+numberB;
}
}
减类:
Java代码
packageOperation;
publicclassSubextendsOperation {
@Override
publicdoubleoperate() {
returnnumberA-numberB;
}
}
package Operation;
public class Sub extends Operation {
@Override
public double operate() {
return numberA-numberB;
}
}
乘类:
Java代码
packageOperation;
publicclassMulextendsOperation {
@Override
publicdoubleoperate() {
returnnumberA*numberB;
}
}
package Operation;
public class Mul extends Operation {
@Override
public double operate() {
return numberA*numberB;
}
}
除类:
Java代码
packageOperation;
importjava.io.IOError;
publicclassDivextendsOperation {
@Override
publicdoubleoperate() {
try{
returnnumberA/numberB;
}catch(IOError e) {
System.out.println("除数不能为空!");
return0;
}
}
}
package Operation;
import java.io.IOError;
public class Div extends Operation {
@Override
public double operate() {
try {
return numberA/numberB;
} catch (IOError e) {
System.out.println("除数不能为空!");
return 0;
}
}
}
工厂类:
Java代码
importOperation.Add;
importOperation.Div;
importOperation.Mul;
importOperation.Operation;
importOperation.Sub;
publicclassOperationFactory {
publicstaticOperation createOperation(charoperate){
Operation operation=null;
switch(operate) {
case'+':
operation=newAdd();
break;
case'-':
operation=newSub();
break;
case'*':
operation=newMul();
break;
case'/':
operation=newDiv();
break;
}
returnoperation;
}
}
import Operation.Add;
import Operation.Div;
import Operation.Mul;
import Operation.Operation;
import Operation.Sub;
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;
}
}
客户端:
Java代码
importOperation.Operation;
publicclassClient {
publicstaticvoidmain(String[] args) {
Operation operation = OperationFactory.createOperation('*');
operation.setNumberA(12);
operation.setNumberB(6);
System.out.println(operation.operate());
}
}