定义:一个工厂对象决定创建出哪一种产品类的实例。简单工厂模式不属于GOF23种设计模式之一,简单工厂模式是工厂模式家族中最简单实用的模式,可以理解为是不同工厂模式的一个特殊实现。

/**
 * 操作工厂类
 */
class OperationFactory {
    /**
     * 
     * @param operate 根据传进来的操作符,选择实例化响应的对象
     * @return
     */
    public static Operation createOperate(String operate){
        Operation oper = null;
        switch(operate){
            case "+":
                oper = new OperationAdd();
                break;
            case "-":
                oper = new OperationSub();
                break;
            case "*":
                oper = new OperationMul();
                break;
            case "/":
                oper = new OperationDiv();
                break;
        }
        return oper;
    }
}

/**
 * 操作抽象类,各种算数操作需要继承此类,并实现getResult方法
 */
public abstract class Operation {
    abstract Integer getResult(int a, int b);
}

class OperationAdd extends Operation {
    @Override
    Integer getResult(int a, int b) {
        return a+b;
    }
}

class OperationSub extends Operation {
    @Override
    Integer getResult(int a, int b) {
        return a-b;
    }
}

class OperationMul extends Operation {
    @Override
    Integer getResult(int a, int b) {
        return a*b;
    }
}

class OperationDiv extends Operation {
    @Override
    Integer getResult(int a, int b) {
        return a/b;
    }
}

/**
 * 测试操作不再赘述
 */
public static void main(String[] args) {
        Operation oper = OperationFactory.createOperate("+");
        oper.getResult(10, 5);
}

优点:能根据需要(传入的参数)创建对象。
缺点:很明显,如果有需求变更,便需要更改操作工厂类,需要再加一个“case”,再增加一个具体的操作类,违反了开放-封闭原则;而且,如果有相当多的分支的话,会导致代码不易阅读的不良后果。
总结:如果操作工厂类(也就是需求)在相当长的一段时间不会变更的话,那么此模式就有使用的必要了。(后面会看到简单工厂模式的便利之处)


发给官兵
47 声望23 粉丝

态度决定行为,行为决定习惯,习惯决定性格,性格决定命运