美文网首页
设计模式之简单工厂模式

设计模式之简单工厂模式

作者: 代码之尖 | 来源:发表于2018-12-27 11:39 被阅读0次

简单工厂模式又 叫静态工厂方法模式(Static FactoryMethod Pattern),是通过专门定义一个类来负责创建其他类的实例,被创建的实例通常都具有共同的父类。 

public abstract class Operation {

    public abstract float getResult(float firstNumber, float secondNumber);

}

//把符号都当做对象处理,实现此接口

public class AddOperation extends Operation {

    @Override

    public float getResult(float firstNumber, float secondNumber) {

        return firstNumber+secondNumber;

    }

}

public class SubOperation extends Operation {

    @Override

    public float getResult(float firstNumber, float secondNumber) {

        return firstNumber-secondNumber;

    }

}

public class MulOperation extends Operation {

    @Override

    public float getResult(float firstNumber, float secondNumber) {

        return firstNumber*secondNumber;

    }

}

public class DivOperation extends Operation {

    @Override

    public float getResult(float firstNumber, float secondNumber) {

        return firstNumber/secondNumber;

    }

}

//接下来需要解决的就是对象的创建问题了,既如何根据不同的情况创建不同的对象:我们正好可以通过简单工厂模式实现

public class OperationFactory {

    public static Operation getOperation(String quotaFlag){

        Operation o = null;

        switch (quotaFlag){

            case "+" :  o = new AddOperation();

            case "-" :  o = new SubOperation();

            case "*" :  o = new MulOperation();

            case "/" :  o = new DivOperation();

            default:break;

        }

        return o;

    }

}

//调用:

public class Computer {

    public static void main(String[] args) {

        Scanner in = new Scanner(System.in);

        System.out.println("请输入第一个数字:");

        float firstNum  = in.nextFloat();

        System.out.println("请输入第二个数字:");

        float secondNum  = in.nextFloat();

        System.out.println("请输入运算符号:");

        String countQuato = in.next();

        System.out.println(count(firstNum,secondNum,countQuato));

    }

    private static float count(float firstNum,float secondNum , String countQuota){

    //通过工厂类获取对象

        Operation operation = OperationFactory.getOperation(countQuota);

        return operation.getResult(firstNum,secondNum);

    }

}

简单工厂将对象的创建过程进行了封装,用户不需要知道具体的创建过程,只需要调用工厂类获取对象即可。

这种简单工厂的写法是通过switch-case来判断对象创建过程的。在实际使用过程中,违背了 开放-关闭原则,当然有些情况下可以通过反射调用来弥补这种不足。

相关文章

  • iOS设计模式(三)之抽象工厂模式

    设计模式系列传送门 iOS设计模式(一)之简单工厂模式iOS设计模式(二)之工厂模式iOS设计模式(三)之抽象工厂...

  • iOS设计模式(一)之简单工厂模式

    设计模式系列传送门 iOS设计模式(一)之简单工厂模式iOS设计模式(二)之工厂模式iOS设计模式(三)之抽象工厂...

  • iOS设计模式(二)之工厂模式

    设计模式系列传送门 iOS设计模式(一)之简单工厂模式iOS设计模式(二)之工厂模式iOS设计模式(三)之抽象工厂...

  • 简单工厂模式

    Android进阶之设计模式 简单工厂模式 简单工厂模式(又叫作静态工厂方法模式), 其属于创建型设计模式,但并不...

  • 设计模式之工厂模式

    设计模式之工厂模式 1. 简单工厂模式 1.1 模式定义 简单工厂模式又称为静态工厂方法,它属于创建型模式。在简单...

  • 设计模式之简单工厂、工厂方法、抽象工厂

    设计模式之简单工厂、工厂方法、抽象工厂 什么是设计模式? 设计模式(Design pattern)代表了最佳的实践...

  • 设计模式-工厂模式

    设计模式1 设计模式2 工厂模式 工厂模式可简单的分为三类:简单工厂,工厂方法,抽象工厂 简单工厂模式 定义 简单...

  • 2016.06笔记

    iOS设计模式之工厂模式(简单工厂,工厂方法,抽象工厂) 简单工厂:简单工厂模式的工厂类一般是使用静态方法,通过接...

  • 重学设计模式(五):《Head First设计模式》工厂模式

    前言 接上篇重学设计模式(四):《Head First设计模式》工厂模式之简单工厂 概念 工厂方法模式:定义了一个...

  • 设计模式一、单例模式

    系列传送门设计模式一、单例模式设计模式二、简单工厂模式设计模式三、工厂模式设计模式四、抽象工厂模式 简单单例(推荐...

网友评论

      本文标题:设计模式之简单工厂模式

      本文链接:https://www.haomeiwen.com/subject/btlrlqtx.html