簡單工廠模式的UML類圖與原始碼實現(轉)
阿新 • • 發佈:2019-01-29
簡單工廠模式的UML圖
原始碼:Operation類
Java程式碼- package Operation;
- publicabstractclass Operation {
- double numberA=0;
- double numberB=0;
- publicdouble getNumberA() {
- return numberA;
- }
- publicvoid setNumberA(double numberA) {
- this.numberA = numberA;
- }
- publicdouble getNumberB() {
- return numberB;
- }
- publicvoid setNumberB(double numberB) {
- this.numberB = numberB;
- }
- publicabstractdouble 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(); }
加類:
Java程式碼- package Operation;
- publicclass Add extends Operation {
- @Override
- publicdouble operate() {
- return numberA+numberB;
- }
- }
package Operation;
public class Add extends Operation {
@Override
public double operate() {
return numberA+numberB;
}
}
減類:
Java程式碼- package Operation;
- publicclass Sub extends Operation {
- @Override
- publicdouble operate() {
- return numberA-numberB;
- }
- }
package Operation;
public class Sub extends Operation {
@Override
public double operate() {
return numberA-numberB;
}
}
乘類:
Java程式碼- package Operation;
- publicclass Mul extends Operation {
- @Override
- publicdouble operate() {
- return numberA*numberB;
- }
- }
package Operation;
public class Mul extends Operation {
@Override
public double operate() {
return numberA*numberB;
}
}
除類:
Java程式碼- package Operation;
- import java.io.IOError;
- publicclass Div extends Operation {
- @Override
- publicdouble operate() {
- try {
- return numberA/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程式碼- import Operation.Add;
- import Operation.Div;
- import Operation.Mul;
- import Operation.Operation;
- import Operation.Sub;
- publicclass OperationFactory {
- publicstatic 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;
}
}
客戶端:
Java程式碼- import Operation.Operation;
- publicclass Client {
- publicstaticvoid main(String[] args) {
- Operation operation = OperationFactory.createOperation('*');
- operation.setNumberA(12);
- operation.setNumberB(6);
- System.out.println(operation.operate());
- }
- }