实现简单工厂模式
package factory.test3;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import factory.test2.Operation;
public class Main {
public static void main(String[] args) {
// TODO Auto-generated method stub
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String strNumA,strNumB,strOperationalSign;
System.out.println("Please input a number A:");
try {
strNumA=br.readLine().trim();
System.out.println("Please input an operational sign:");
strOperationalSign=br.readLine().trim();
factory.test3.Operation operationObject=OperationFactory.createOperation(strOperationalSign);
System.out.println("Please input a number B:");
strNumB=br.readLine().trim();
operationObject.setNumA(Double.parseDouble(strNumA));
operationObject.setNumB(Double.parseDouble(strNumB));
Double result=operationObject.getResult();
System.out.println("The result is :"+ result );
} catch (IOException e) {
e.printStackTrace();
}
}
}
package factory.test3;
public class Operation {
private double numA=0;
private double numB=0;
public double getNumA() {
return numA;
}
public double getNumB() {
return numB;
}
public void setNumA(double numA) {
this.numA = numA;
}
public void setNumB(double numB) {
this.numB = numB;
}
public double getResult(){
double result=0;
return result ;
}
}
package factory.test3;
public class OperationAdd extends Operation{
public double getResult(){
double result=0;
result=getNumA()+getNumB();
return result;
}
}
package factory.test3;
public class OperationSubtract extends Operation{
public double getResult(){
double result=0;
result=getNumA()-getNumB();
return result;
}
}
package factory.test3;
public class OperationMultiply extends Operation{
public double getResult(){
double result=0;
result=getNumA()*getNumB();
return result;
}
}
package factory.test3;
public class OperationDivide extends Operation{
public double getResult(){
double result=0;
result=getNumA()/getNumB();
return result;
}
}
package factory.test3;
public class OperationFactory {
public static Operation createOperation(String strOperationalSign){
int intOperationalSign = 1;
Double strResult = null;
if("+".equals(strOperationalSign)){
intOperationalSign=1;
}else if("-".equals(strOperationalSign)){
intOperationalSign=2;
}else if("*".equals(strOperationalSign)){
intOperationalSign=3;
}else if("/".equals(strOperationalSign)){
intOperationalSign=4;
}
switch(intOperationalSign){
case 1:
return new OperationAdd();
case 2:
return new OperationSubtract();
case 3:
return new OperationMultiply();
case 4:
return new OperationDivide();
default:
return null;
}
}
}
注:本文章所涵盖的知识来源于程杰老师的《大话设计模式》,我从中受益匪浅,推荐大家拜读:)