简单工厂模式
定义:定义一个创建对象的接口,简单工厂模式又称静态工厂方法模式。
UML类图:①工厂类:根据传进来的参数标志创建具体子类。②抽象父类:具有公共功能的接口或抽象类。③具体子类:继承抽象父类,重写父类的公共方法,实现不同的业务逻辑。
案例:计算器
工厂类:
public class OperatorFactory {
public static int[] OPERATOR_TYPES = {'+','-','*','/','s'};
public static SuperOperate createOperate(int operate){
SuperOperate superOperate = null;
if(OPERATOR_TYPES[0] == operate){
superOperate = new AddOperate();
}else if(OPERATOR_TYPES[1] == operate){
superOperate = new AddOperate();
}else if(OPERATOR_TYPES[2] == operate){
superOperate = new AddOperate();
}else if(OPERATOR_TYPES[3] == operate){
superOperate = new AddOperate();
}else if(OPERATOR_TYPES[4] == operate){
superOperate = new AddOperate();
}
return superOperate;
}
}
抽象父类:
public class SuperOperate {
public double numberA;
public double numberB;
public double getResult(){
return 0.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 class AddOperate extends SuperOperate {
@Override
public double getResult() {
return numberA + numberB;
}
}
优点:①扩展性好,如果想加一个新的业务逻辑,只需要新增一个具体子类。②只需要知道工厂类的创建对象方法的参数,就可以创建具体子类。
缺点:①新增业务逻辑时,每次都需要增加新的具体子类和工厂类逻辑,具体子类太多,维护困难。②简单工厂模式由于使用了静态工厂方法,造成工厂角色无法形成基于继承的等级结构。