设计模式一:简单工厂模式(Simple Factory Pattern)

简单工厂模式(Simple Factory Pattern)是一种创建型设计模式,它提供了一个通用的接口来创建各种不同类型的对象,而无需直接暴露对象的创建逻辑给客户端。

简单工厂的三个重要角色:

工厂类(Factory Class):负责创建具体产品的实例。它通常包含一个静态方法,根据不同的参数返回不同的具体产品实例。

抽象产品类(Abstract Product Class):定义了具体产品的共同接口或抽象类,所有具体产品都实现该接口或继承自该抽象类。

具体产品类(Concrete Product Class):实现了抽象产品类定义的接口或继承了抽象产品类。

简单工厂模式的使用步骤如下:

定义好抽象产品类和具体产品类。

创建工厂类,其中包含一个静态方法,根据不同的参数返回不同的具体产品实例。

在客户端中通过调用工厂类的静态方法来获取具体产品的实例。

简单工厂的实践

当实践简单工厂模式时,首先需要创建一个工厂类,该类负责根据不同的条件来创建并返回具体的产品实例。

以下是一个示例的简单工厂模式的代码实现:

java 复制代码
// 定义产品接口
interface Product {
    void operation();
}

// 具体产品A
class ConcreteProductA implements Product {
    @Override
    public void operation() {
        System.out.println("具体产品A的操作");
    }
}

// 具体产品B
class ConcreteProductB implements Product {
    @Override
    public void operation() {
        System.out.println("具体产品B的操作");
    }
}

// 工厂类
class SimpleFactory {
    // 根据传入的参数创建具体产品的实例
    public static Product createProduct(String productType) {
        if (productType.equalsIgnoreCase("A")) {
            return new ConcreteProductA();
        } else if (productType.equalsIgnoreCase("B")) {
            return new ConcreteProductB();
        } else {
            return null;
        }
    }
}

// 使用示例
public class Main {
    public static void main(String[] args) {
        // 创建产品A
        Product productA = SimpleFactory.createProduct("A");
        productA.operation(); // 输出:具体产品A的操作

        // 创建产品B
        Product productB = SimpleFactory.createProduct("B");
        productB.operation(); // 输出:具体产品B的操作
    }
}

在上述示例中,Product 是产品接口,ConcreteProductAConcreteProductB 是具体产品类。SimpleFactory 是工厂类,其中的 createProduct 方法根据传入的参数来创建并返回具体产品的实例。

Main 类中,我们通过调用工厂类的 createProduct 方法来创建不同类型的产品实例,并进行相应的操作。

在上述示例中,Product 是产品接口,ConcreteProductA 和 ConcreteProductB 是具体产品类。SimpleFactory 是工厂类,其中的 createProduct 方法根据传入的参数来创建并返回具体产品的实例。

在 Main 类中,我们通过调用工厂类的 createProduct 方法来创建不同类型的产品实例,并进行相应的操作。

简单工厂模式的优缺点:

简单工厂模式的优点:

封装了对象的创建逻辑:通过使用简单工厂模式,可以将对象的创建逻辑封装到一个工厂类中,客户端只需要知道如何使用工厂类来获取所需的对象,而不需要关心具体的对象创建过程。

降低了客户端与具体产品类之间的耦合度:客户端只依赖于抽象产品类和工厂类,不需要直接与具体产品类打交道,从而降低了耦合度,使得系统更加灵活和可维护。

提供了一种简单且通用的方式创建对象:简单工厂模式可以根据传入的参数或条件来动态创建不同类型的对象,从而提供了一种简单且通用的方式来创建对象。

简单工厂模式的缺点:

不符合开闭原则:当需要新增加新的具体产品类时,需要修改工厂类的代码,违反了开闭原则(对扩展开放,对修改关闭)。

工厂类职责过重:在简单工厂模式中,工厂类负责创建所有的具体产品对象,随着具体产品类的增多,工厂类的职责会变得很重,导致代码复杂化。

不易于扩展和维护:随着具体产品类的增加,工厂类的代码会不断膨胀,不易于扩展和维护。

相关推荐
槿花Hibiscus1 分钟前
C++基础:Pimpl设计模式的实现
c++·设计模式
吾与谁归in21 分钟前
【C#设计模式(4)——构建者模式(Builder Pattern)】
设计模式·c#·建造者模式
shinelord明24 分钟前
【再谈设计模式】建造者模式~对象构建的指挥家
开发语言·数据结构·设计模式
matrixlzp6 小时前
Java 责任链模式 减少 if else 实战案例
java·设计模式
编程、小哥哥9 小时前
设计模式之组合模式(营销差异化人群发券,决策树引擎搭建场景)
决策树·设计模式·组合模式
hxj..10 小时前
【设计模式】外观模式
java·设计模式·外观模式
吾与谁归in10 小时前
【C#设计模式(10)——装饰器模式(Decorator Pattern)】
设计模式·c#·装饰器模式
无敌岩雀11 小时前
C++设计模式行为模式———命令模式
c++·设计模式·命令模式
In_life 在生活21 小时前
设计模式(四)装饰器模式与命令模式
设计模式
瞎姬霸爱.21 小时前
设计模式-七个基本原则之一-接口隔离原则 + SpringBoot案例
设计模式·接口隔离原则