当前位置: 首页 > news >正文

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

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

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

工厂类(Factory Class):负责创建具体产品的实例。它通常包含一个静态方法,根据不同的参数返回不同的具体产品实例。
抽象产品类(Abstract Product Class):定义了具体产品的共同接口或抽象类,所有具体产品都实现该接口或继承自该抽象类。
具体产品类(Concrete Product Class):实现了抽象产品类定义的接口或继承了抽象产品类。

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

定义好抽象产品类和具体产品类。
创建工厂类,其中包含一个静态方法,根据不同的参数返回不同的具体产品实例。
在客户端中通过调用工厂类的静态方法来获取具体产品的实例。

简单工厂的实践

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

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

// 定义产品接口
interface Product {void operation();
}// 具体产品A
class ConcreteProductA implements Product {@Overridepublic void operation() {System.out.println("具体产品A的操作");}
}// 具体产品B
class ConcreteProductB implements Product {@Overridepublic 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) {// 创建产品AProduct productA = SimpleFactory.createProduct("A");productA.operation(); // 输出:具体产品A的操作// 创建产品BProduct productB = SimpleFactory.createProduct("B");productB.operation(); // 输出:具体产品B的操作}
}

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

Main 类中,我们通过调用工厂类的 createProduct 方法来创建不同类型的产品实例,并进行相应的操作。
在上述示例中,Product 是产品接口,ConcreteProductA 和 ConcreteProductB 是具体产品类。SimpleFactory 是工厂类,其中的 createProduct 方法根据传入的参数来创建并返回具体产品的实例。
在 Main 类中,我们通过调用工厂类的 createProduct 方法来创建不同类型的产品实例,并进行相应的操作。

简单工厂模式的优缺点:

简单工厂模式的优点:
封装了对象的创建逻辑:通过使用简单工厂模式,可以将对象的创建逻辑封装到一个工厂类中,客户端只需要知道如何使用工厂类来获取所需的对象,而不需要关心具体的对象创建过程。
降低了客户端与具体产品类之间的耦合度:客户端只依赖于抽象产品类和工厂类,不需要直接与具体产品类打交道,从而降低了耦合度,使得系统更加灵活和可维护。
提供了一种简单且通用的方式创建对象:简单工厂模式可以根据传入的参数或条件来动态创建不同类型的对象,从而提供了一种简单且通用的方式来创建对象。
简单工厂模式的缺点:
不符合开闭原则:当需要新增加新的具体产品类时,需要修改工厂类的代码,违反了开闭原则(对扩展开放,对修改关闭)。
工厂类职责过重:在简单工厂模式中,工厂类负责创建所有的具体产品对象,随着具体产品类的增多,工厂类的职责会变得很重,导致代码复杂化。
不易于扩展和维护:随着具体产品类的增加,工厂类的代码会不断膨胀,不易于扩展和维护。

http://www.lryc.cn/news/97119.html

相关文章:

  • 如何利用plotly和geopandas根据美国邮政编码(Zip-Code)绘制美国地图
  • ceph集群搭建
  • 前端密码加密 —— bcrypt、MD5、SHA-256、盐
  • 汽车UDS诊断深度学习专栏
  • macOS 下安装brew、nvm
  • 【云原生】Kubernetes工作负载-StatefulSet
  • Java:方法的重载
  • 7.react useCallback与useMemo函数使用与常见问题
  • Sentinel限流中间件
  • 使用ajax进行前后端交互的方法
  • 动手学深度学习——线性回归从零开始
  • Redis缓存击穿
  • 网络安全(黑客)自学的一些建议
  • 全志F1C200S嵌入式驱动开发(基于usb otg的spi-nor镜像烧入)
  • 如何恢复损坏/删除的 Word 文件
  • 【论文阅读】Feature Inference Attack on Shapley Values
  • TDesign 中后台系统搭建
  • Android 实现阅读用户协议的文字控件效果
  • 19.主题时钟
  • ChatGPT在智能电子设备中的应用如何?
  • MGRE之OSPF实验
  • 【Selenium+Pytest+allure报告生成自动化测试框架】附带项目源码和项目部署文档
  • 如何负载均衡中的日志统一管理
  • Java_26_Stream流
  • 周四见 | 物流人的一周资讯
  • uniapp 即时通讯开发流程详解
  • 【Terraform学习】Terraform-docker部署快速入门(快速入门)
  • C# 全局响应Ctrl+Alt+鼠标右键
  • 【Leetcode】54.螺旋矩阵
  • 怎样计算一个算法的复杂度?