简单工厂模式的UML图
源码:Operation类
- 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();
- }
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();
}
加类:
- package Operation;
- public class Add extends Operation {
- @Override
- public double operate() {
- return numberA+numberB;
- }
- }
package Operation;
public class Add extends Operation {
@Override
public double operate() {
return numberA+numberB;
}
}
减类:
- package Operation;
- public class Sub extends Operation {
- @Override
- public double operate() {
- return numberA-numberB;
- }
- }
package Operation;
public class Sub extends Operation {
@Override
public double operate() {
return numberA-numberB;
}
}
乘类:
- package Operation;
- public class Mul extends Operation {
- @Override
- public double operate() {
- return numberA*numberB;
- }
- }
package Operation;
public class Mul extends Operation {
@Override
public double operate() {
return numberA*numberB;
}
}
除类:
- 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;
- }
- }
- }
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;
}
}
}
工厂类:
- 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;
- }
- }
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;
}
}
客户端:
- import Operation.Operation;
- public class Client {
- public static void main(String[] args) {
- Operation operation = OperationFactory.createOperation('*');
- operation.setNumberA(12);
- operation.setNumberB(6);
- System.out.println(operation.operate());
- }
- }