简单工厂模式
简单工厂模式,是指通过一个类创建某一类型的实例,根据传入的参数不同,创建对应的实例。这些实例都有一个共同的父类。
二、特点:
将具体的业务逻辑分离封装,客户端只需通过工厂类,来创建所需的实例。后期维护时也只需维护具体的实现类,降低耦合性。利用了java的封装、继承、多态三大特性。
![](data:image/png;base64,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)
运算的父类:
package com.pattern.simpleFactory;
public class Operator {
private String numberA;
private String numberB;
String printResult;
public String getNumberA() {
return numberA;
}
public void setNumberA(String numberA) {
this.numberA = numberA;
}
public String getNumberB() {
return numberB;
}
public void setNumberB(String numberB) {
this.numberB = numberB;
}
public String getResult(String operator){
return printResult;
}
}
加法运算:
package com.pattern.simpleFactory;
import java.text.DateFormat;
public class Addition extends Operator {
public String getResult(String operator) {
DateFormat.getDateInstance();
Double result=Double.parseDouble(getNumberA())+Double.parseDouble(getNumberB());
printResult=result.toString();
return printResult;
}
}
减法运算:
package com.pattern.simpleFactory;
public class Subtraction extends Operator {
public String getResult(String operator) {
Double result = Double.parseDouble(getNumberA()) - Double.parseDouble(getNumberB());
printResult = result.toString();
return printResult;
}
}
乘法运算:
package com.pattern.simpleFactory;
public class Multiplication extends Operator{
public String getResult(String operator){
Double result=Double.parseDouble(getNumberA())*Double.parseDouble(getNumberB());
printResult=result.toString();
return printResult;
}
}
除法运算:
package com.pattern.simpleFactory;
public class Subtraction extends Operator {
public String getResult(String operator) {
Double result = Double.parseDouble(getNumberA()) - Double.parseDouble(getNumberB());
printResult = result.toString();
return printResult;
}
}
工厂类:
package com.pattern.simpleFactory;
/*简单工厂模式*/
public class OperationFactory {
Operator operator;
public Operator getOperator(String opt) {
switch (opt) {
case "*":
operator = new Multiplication();
break;
case "+":
operator = new Addition();
break;
case "-":
operator = new Subtraction();
break;
case "/":
operator = new Division();
break;
default:
break;
}
return operator;
}
}
客户端代码:
package com.pattern.simpleFactory;
public class Client {
public static void main(String[] args) {
String numberA="23";
String numberB="56";
String opt="/";
/*利用简单工厂生成实例*/
Operator operator =new OperationFactory().getOperator(opt);
operator.setNumberA(numberA);
operator.setNumberB(numberB);
String result =operator.getResult(opt);
System.out.println(result);
}
}