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

设计模式--简单工厂模式

作者: daoshud1 | 来源:发表于2019-11-30 11:28 被阅读0次

什么是工厂模式

工厂模式(Factory Pattern)是 Java 中最常用的设计模式之一。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。
在工厂模式中,我们在创建对象时不会对客户端暴露创建逻辑,并且是通过使用一个共同的接口来指向新创建的对象。

简单的解释

例我们将肯德基当作一个工厂,当我们去点餐,只需要告诉前台,我要一个汉堡或薯条即可,我们不需要去关心汉堡是如何制作;
我们点餐的过程相当于我们创建一个工厂类,告诉前台我们要一个汉堡相当于把名称告诉工厂,由工厂去生产;
而前台告诉厨房:一个汉堡,相当于由工厂决定我们调用哪个类、哪个对象,最终厨房把汉堡给前台,前台在递到我们手中,则相当于对象实例化完成;

  • 优点
    创建一个对象,只需要知道名称即可;扩展性高,增加产品,只需要增加对应的工厂类;
  • 缺点
    每增加一个产品,都需要对应的工具类、工厂类;一个工厂只能生产一个产品;当产品过多时,一定程序增加了系统的复杂性;

代码解释

实现一个计算器类,由输入两个数字、运算符,得到结果;
1、首先声明一个抽象类,该抽象类只有一个方法,输入数字,返回计算结果

/**
 * 运算抽像类,只有一个获取返回结果的方法
 */
public abstract class OperatorAction {

    /**
     * 根据计算 获取返回结果
     * @param numberFIrst
     * @param numberSecond
     * @return
     */
    public abstract Integer getResult(String numberFIrst,String numberSecond);

}

2、声明对应的子类,继承抽像父类,实现其计算方法

public class AddOperatorAction extends OperatorAction {

    private String operator="+";

    /**
     * 此处仅实现相加运算操作,其它-,*,/ 可实现同时的子类进行操作
     * @param numberFIrst
     * @param numberSecond
     * @return
     */
    @Override
    public Integer getResult(String numberFIrst, String numberSecond) {
        return Integer.valueOf(numberFIrst)+Integer.valueOf(numberSecond);
    }
}

3、创建一个简单的工厂,根据运算符去决定实例化对应的类

public class Action {

    public static OperatorAction factory(String operator){
        OperatorAction oper=null;
        switch (operator){
            case "+":
                oper=new AddOperatorAction();
                break;
        }
        return oper;
    }

    public static void main(String[] args) throws IOException {
        Scanner sc = new Scanner(System.in);
        System.out.print("简单工厂模式,简易计算器\n请输入第一个数字:\n");
        String numberFirst=sc.nextLine();
        System.out.println("请输入运算符(+、-、*、/):");
        String operator=sc.nextLine();
        System.out.println("请输入第二个数字:");
        String numberSecond=sc.nextLine();
        OperatorAction oper=factory(operator);
        System.out.println("运算结果:"+oper.getResult(numberFirst,numberSecond));
    }
}

后记

工厂模式在Java开发中最常见的就是Spring、Hibernate,像Spring的Bean工厂,我们只需要知道bean的name就可以直接调用,而Hibernate的连接我们同样从SessionFactory中直接获取,通过工厂模式降低的藕合,使得在开发中变的更加容易,高效;

代码参照:大话设计模式
名称解释:http://www.runoob.com/design-pattern/factory-pattern.html

相关文章

  • 设计模式-工厂模式

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

  • 设计模式一、单例模式

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

  • 设计模式四、抽象工厂模式

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

  • 设计模式三、工厂模式

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

  • 设计模式

    设计模式(视频总结) [TOC] 一、简单工厂模式(Simple Factory) 简单工厂模式: 简单工厂模式属...

  • iOS设计模式-工厂模式

    工厂模式分为简单工厂模式,工厂模式、抽象工厂模式三类。 简单工厂模式 1. 定义 简单工厂模式并不是常用的设计模式...

  • Android设计模式:工厂设计模式

    目录 简单工厂模式工厂方法模式抽象工厂模式 简单工厂模式 简单工厂模式是所有工厂模式的基础,不属于23种设计模式范...

  • 相近设计模式比较

    设计模式干货: 简单工厂模式 vs. 工厂模式 vs. 抽象工厂模式简单工厂和工厂模式区别? 简单工厂没有多个子类...

  • 三、创建型模型

    简单工厂模式 工厂方法模式 抽象工厂模式 单例模式 1.简单工厂模式 简单工厂模式并不属于23种设计模式。 不难看...

  • 简单工厂模式

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

网友评论

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

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