简单工厂模式小结

╄→гoц情女王★ 提交于 2020-03-14 14:41:44
直觉地使用计算机机能理解的面向过程的方式去解决问题,会出现耦合的问题,是一种短期的方案,使得程序不容易维护与拓展。所以应该将面向对象的思想应用到程序设计当中,通过封装、继承、多态将程序的耦合度降低,运用设计模式增强程序的灵活性,使得它易于修改与复用。为了培养更好的编程思维与习惯,先从设计模式的学习与使用开始,希望有计划地学习设计模式,并且逐渐从了解到化为内用嘤嘤嘤!一、简单工厂模式:创建一个专门的类,使它根据情况创建不同类的对象,实现业务逻辑与界面逻辑的分离,降低耦合。
二、以实现简单计算器为例:创建基础运算抽象类继承抽象类,实现抽象类中的具体运算方法创建简单工厂类,由简单工厂类根据情况选定运算方法,即选定需要创建的类对象。
abstract class Operation{
    private double numberA=0;
    private double numberB=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;
    }

    abstract double getResult() throws Exception;
}

/**
 * 继承抽象类,实现一些具体的运算
 */
class Add extends Operation{

    @Override
    double getResult() {
        return getNumberA()+getNumberB();
    }
}

class Less extends Operation{


    @Override
    double getResult() {
        return getNumberA()-getNumberB();
    }
}

class Mul extends Operation {


    @Override
    double getResult() throws Exception{
        if (getNumberB()!=0){
            return getNumberA()/getNumberB();
        }else{
            throw new Exception("除数为零,不合法");
        }
    }
}

public class SimpleFactory {
    public Operation chooseFunc (String operate){
        Operation operation=null;
        switch (operate){
            case "+":
                operation=new Add();
                break;
            case "-":
                operation=new Less();
                break;
            case "/":
                operation=new Mul();
                break;
            default:
                System.out.println("继续扩展方法吧");
                break;
        }
        return operation;
    }
}

class Test{
    public static void main(String[] args) throws Exception {
        double numberA=23;
        double numberB=22;
        String[] operate={"+","-","/"};

        SimpleFactory simpleFactory=new SimpleFactory();
        Operation operation=simpleFactory.chooseFunc(operate[2]);
        operation.setNumberA(numberA);
        operation.setNumberB(numberB);
        System.out.println(operation.getResult());
    }
}

 

  

 

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!