一、概述
简单工厂模式又称静态工厂模式。属于创建型模式,但不属于23中GOF设计模式之一。
简单工厂模式,即通过专门定义一个工厂类来负责创建其他类的实例,被创建的实例通常都具有共同的父类。
二、编程实现
该程序主要通过模拟计算器的功能实现。
1、创建共同父类
public class Operation {
private int numberA;
private int numberB;
public int getNumberA() {
return numberA;
}
public void setNumberA(int numberA) {
this.numberA = numberA;
}
public int getNumberB() {
return numberB;
}
public void setNumberB(int numberB) {
this.numberB = numberB;
}
public int getResult(){
int result = 0;
return result;
}
}
2、创建基于父类的子类
2.1 加法类
public class OperationAdd extends Operation {
@Override
public int getResult() {
int result = 0;
result = super.getNumberA() +super.getNumberB();
return result;
}
}
2.2 减法类
public class OperationSub extends Operation {
@Override
public int getResult() {
int result = 0;
result = super.getNumberA() - super.getNumberB();
return result;
}
}
2.3 乘法类
public class OperationMult extends Operation {
@Override
public int getResult() {
int result = 0;
result = super.getNumberA() * super.getNumberB();
return result;
}
}
2.4 除法类
public class OperationDiv extends Operation {
@Override
public int getResult() {
int result = 0;
try {
result = super.getNumberA() / super.getNumberB();
}catch (Exception e){
System.out.println("除数不能为0.");
}
return result;
}
}
3、创建工厂类
public class OperationFactory {
public static Operation createOperate(String operateType){
Operation operation = null;
switch (operateType){
case "+":
operation = new OperationAdd();
break;
case "-":
operation = new OperationSub();
break;
case "*":
operation = new OperationMult();
break;
case "/":
operation = new OperationDiv();
break;
}
return operation;
}
}
4、测试
public class Test {
public static void main(String[] args) {
Operation oper = OperationFactory.createOperate("+");
oper.setNumberA(50);
oper.setNumberB(10);
System.out.println(oper.getResult());
}
}
注:参考文献《大话设计模式》程杰著。