简单工程模式的UML图:
工厂角色:这是简单工厂模式的核心,由它负责创建所有的类的内部逻辑。当然工厂类必须能够被外界调用,创建所需要的产品对象。
抽象产品角色:简单工厂模式所创建的所有对象的父类,注意,这里的父类可以是接口也可以是抽象类,它负责描述所有实例所共有的公共接口。
具体产品角色:简单工厂所创建的具体实例对象,这些具体的产品往往都拥有共同的父类。
下面一个关于计算器的例子:
父类:
public class Opreate {
private double a;
private double b;
private double result;
public double getA() {
return a;
}
public void setA(double a) {
this.a = a;
}
public double getB() {
return b;
}
public void setB(double b) {
this.b = b;
}
public double getResult()
{
result = 0;
return result;
}
实现类1:
public class OpreateAdd extends Opreate{
private double result;
@Override
public double getResult()
{
result = super.getA() + super.getB();
return result;
}
}
//实现类2:
public class OpreateDiv extends Opreate{
private double result;
@Override
public double getResult()
{
result = super.getA() / super.getB();
return result;
}
}
//实现类3:
public class OpreateMul extends Opreate{
private double result;
@Override
public double getResult()
{
result = super.getA() * super.getB();
return result;
}
}
//实现类4:
public class OpreateSub extends Opreate{
private double result;
@Override
public double getResult()
{
result = super.getA() + super.getB();
return result;
}
}
工厂类:
public Opreate createOpreateFactory(String opr)
{
Opreate opreate = null;
switch (opr) {
case “+”:
opreate = new OpreateAdd();
break;
case “-“:
opreate = new OpreateSub();
break;
case “*”:
opreate = new OpreateMul();
break;
case “/”:
opreate = new OpreateDiv();
break;
default:
try {
throw new Exception("请输入正确的运算符");
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
break;
}
return opreate;
}