简单工厂模式( Simple Factory Pattern )

simple,factory,pattern · 浏览次数 : 0

小编点评

简单工厂模式(Simple Factory Pattern)是一种创建型设计模式,它提供了一种在不指定具体类的情况下创建对象的方法。在简单工厂中,工厂类负责定义创建对象的静态方法,而客户端则通过传入字符串来请求创建特定类型的对象。 1. **工厂类(Factory)**:工厂类是简单工厂的核心,它包含了创建所有实例的内部逻辑。这个类包含了一个静态方法,这个方法用于创建具体的产品实例。 2. **抽象产品角色(Product)**:抽象产品角色是具体产品对象的上层抽象,它定义了所有具体产品应该实现的行为。在这个例子中,`Operation` 接口就是抽象产品角色,它定义了一个 `getResult` 方法,用于计算两个数的运算结果。 3. **具体产品类(Concrete Product)**:具体产品类是实现了抽象产品角色的具体类。在这个例子中,`Add`、`Sub`、`Mul` 和 `Div` 类都是具体产品类,它们分别实现了加法、减法、乘法和除法运算。 4. **客户端(Client)**:客户端是使用简单工厂的客户,它通过调用工厂类的静态方法来创建具体的产品实例。在这个例子中,`Client` 类调用了 `createOperation` 方法,并传入了操作符字符串来创建具体的运算实例。 需要注意的是,在简单工厂模式中,客户端不应该知道具体产品类的名字,这降低了模块间的耦合度。当需要添加新的产品类别时,只需要添加新的具体产品类和更新工厂类中的静态方法即可。

正文

简单工厂模式(Simple Factory Pattern),在工厂类中对象决定创建出哪一种产品类的实例。这些产品类都实现了相同的接口,或者继承了相同的父类。

结构图

  • Factory工厂角色):它是核心,负责实现创建所有实例的内部逻辑。在工厂类中,提供了一个静态方法,可以直接被外界直接调用,以创建具体产品对象。
  • Product抽象产品角色):具体产品对象的父类或者接口,具体产品对象都是其子类对象。
  • ConcreteProduct具体产品类):它是创建目标,所有创建的对象都充当这个角色的某个具体类的实例。

简单工厂代码

抽象产品角色

public abstract class Operation {
    /**
     * 获取两个数运算后的值
     *
     * @param numA 第一个数
     * @param numB 第二个数
     * @return 结果
     */
    public abstract double getResult(double numA, double numB);
}

具体产品类,包括加法、减法、乘法、除法四个运算的具体实现

public class Add extends Operation {
    @Override
    public double getResult(double numA, double numB) {
        return numA + numB;
    }
}
public class Sub extends Operation {
    @Override
    public double getResult(double numA, double numB) {
        return numA - numB;
    }
}
public class Mul extends Operation {
    @Override
    public double getResult(double numA, double numB) {
        return numA * numB;
    }
}
public class Div extends Operation {
    @Override
    public double getResult(double numA, double numB) {
        if (numB == 0) {
            System.out.println("除数不能为0");
        }
        return numA / numB;
    }
}

工厂类

public class OperationFactory {
    public static Operation createOperation(String operate) {
        Operation operation = null;
        switch (operate) {
            case "+":
                operation = new Add();
                break;
            case "-":
                operation = new Sub();
                break;
            case "*":
                operation = new Mul();
                break;
            case "/":
                operation = new Div();
                break;

        }
        return operation;
    }
}

客户端

class Client {
    public static void main(String[] args) {
        Operation operation = OperationFactory.createOperation("+");
        operation.getResult(1, 1);
    }
}

与简单工厂模式( Simple Factory Pattern )相似的内容:

简单工厂模式( Simple Factory Pattern )

简单工厂模式(Simple Factory Pattern),在工厂类中对象决定创建出哪一种产品类的实例。这些产品类都实现了相同的接口,或者继承了相同的父类。 结构图 Factory(工厂角色):它是核心,负责实现创建所有实例的内部逻辑。在工厂类中,提供了一个静态方法,可以直接被外界直接调用,以创建

软件设计模式系列之四——简单工厂模式

简单工厂模式(Simple Factory Pattern)是一种创建型设计模式,用于对象的创建,它属于工厂模式的一种。简单工厂模式的主要目标是封装对象的创建过程,使客户端代码与具体类的实例化解耦,从而提高代码的可维护性和可扩展性。

Simple Factory 简单工厂模式简介与 C# 示例【创建型3.1】【设计模式来了_3.1】

本文通过简单的实例对简单工厂模式进行了介绍。

创建型:工厂模式-工厂方法、抽象工厂

简单工厂问题 简单工厂中我们通过参数来返回不同的产品对象,如果管理的对象过多,这个工厂函数会比较庞大,且当我们需要增加一个新的产品时,需要修改这个工厂方法,违反开闭原则(对拓展开放,对修改关闭)。 为了解决简单工厂模式的问题,出现了工厂方法模式。 解决简单工厂思路 简单工厂类图关系类似如下: 如上图

创建型:工厂模式-简单工厂

定义 之所以叫简单工厂是因为真的非常简单,只要一个工厂(函数)就可以了,如果把被创建的对象称为产品,把创建产品的对象或者方法称为工厂,那么只需要传入不同的参数,就可以返回不同的产品(实例),这种模式就叫简单工厂模式。 简单工厂-餐馆点菜 工厂模式其实就是将创建对象的过程单独封装在一个工厂中。 它很像

【23种设计模式】工厂方法模式(二)

## 前言 在讲述之工厂方法模式前,我们来先了解简单工厂模式,简单工厂模式是最简单的设计模式之一,它虽然不属于GoF的23种设计模式,但是应用也较为频繁,同时它也是学习其他创建型模式的基础。下面我们来先了解下简单工厂模式,然后针对它的缺点来引出工厂方法模式。 ## 简单工厂模式定义 **简单工厂模式

设计模式学习(三):工厂模式

设计模式学习(三):工厂模式 作者:Grey 原文地址: 博客园:设计模式学习(三):工厂模式 CSDN:设计模式学习(三):工厂模式 工厂模式 工厂模式是创建型模式,工厂模式分为:简单工厂,工厂方法和抽象工厂三种类型。 简单工厂 这个模式很简单,比如我们需要制造不同类型的鼠标,我们只需要创建一个鼠

Spring6 当中 获取 Bean 的四种方式

1. Spring6 当中 获取 Bean 的四种方式 @目录1. Spring6 当中 获取 Bean 的四种方式每博一文案1.1 第一种方式:通过构造方法获取 Bean1.2 第二种方式:通过简单工厂模式获取 Bean1.3 第三种方式:通过 factory-bean 属性获取 Bean1.4

简易的工厂设计模式

工厂设计模式是一种创建型设计模式,它提供了一种创建对象的最佳方式,而无需暴露对象的创建逻辑。在工厂模式中,我们定义一个接口或抽象类,该接口或抽象类用于创建对象,但让子类决定要实例化的类。工厂方法模式使类的实例化延迟到其子类。 下面是一个完整的C#实现案例: 首先,我们定义一个接口,用于创建对象: p

Abstract Factory 抽象工厂模式简介与 C# 示例【创建型1】【设计模式来了_1】

通过对抽象类和抽象工厂的一组实现,独立出一系列新的操作,客户端无需了解其逻辑直接访问。