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

23种设计模式之工厂模式

目录

简单工厂模式

工厂方法模式 

 示例

应用场景


简单工厂模式

简单工厂模式的核心是将产品的创建过程封装在一个工厂类中,把创建对象的流程集中在这个工厂类中。简单工厂模式包括三个主要角色,工厂类,抽象产品,具体产品。

  • 抽象产品:一个接口,描述产品的通用行为
  • 具体产品:实现抽象产品或继承抽象产品类
  • 工厂类:负责创建产品,根据传递的不同参数创建不同的产品

简单工厂模式简化了客户端的操作,客户端可以调用工厂方法来获取具体产品,而无需直接与具体产品类接触,降低了耦合,但是不够灵活,如果需要添加新的产品就需要修改工厂类的代码。

工厂方法模式 

简单工厂模式只有一个工厂类,负责创建所有的产品,如果需要添加新的产品,通常需要修改工厂类的代码。而工厂方法模式引入了抽象工厂和具体工厂的概念,每个具体工厂只负责创建一个具体产品,添加新的产品只需要添加新的工厂类而无需修改原来的代码。

  • 抽象工厂:一个接口,包含一个抽象的工厂方法。
  • 具体工厂:实现抽象工厂接口,创建具体产品。
  • 抽象产品:定义产品的接口。
  • 具体产品:实现抽象产品接口,是工厂创建的对象。

 示例

下面是工厂方法模拟的示例代码:

// 抽象产品  形状
interface Shape {
    void draw();
}
//具体产品  圆
class Circle implements Shape{

    @Override
    public void draw() {
        System.out.println("Circle");
    }
}
//抽象工厂
interface ShapeFactory{
    Shape createShape();
}
//具体工厂
class CircleFactory implements ShapeFactory{

    @Override
    public Shape createShape() {
        return new Circle();
    }
}
public class demo {
    public static void main(String[] args) {
        ShapeFactory circleFactory=new CircleFactory();
        Shape circle=new Circle();
        circle.draw();
    }
}

应用场景

 工厂方法模式使得每个工厂类的职责单一,每个工厂只负责创建一种产品,当创建对象涉及一系列复杂的初始化逻辑,而这些逻辑在不同的子类中可能有所不同时,可以使用工厂模式将这些初始化逻辑封装在子类的工厂中。


http://www.kler.cn/a/230203.html

相关文章:

  • 【八股文】小米
  • 4.4 JMeter 请求参数类型详解
  • C++ 二叉搜索树(Binary Search Tree, BST)深度解析与全面指南:从基础概念到高级应用、算法优化及实战案例
  • 【Python爬虫实战】深入解析 Scrapy:从阻塞与非阻塞到高效爬取的实战指南
  • 文件内容扫描工具
  • H.265流媒体播放器EasyPlayer.js无插件H5播放器关于移动端(H5)切换网络的时候,播放器会触发什么事件
  • 【Java安全】ysoserial-URLDNS链分析
  • 为什么说不可知论有合理的成分
  • 【Java基础常见面试题】- Java SE vs Java EE
  • 如何启动若依框架
  • LeetCodeLCR 114. 火星词典——拓扑排序
  • 【Scala 】3. 类和对象
  • Linux(三)--文件系统
  • linux中的gdb调试
  • 【Spring Boot】第一篇 创建简单的Spring Boot项目
  • [基础IO]文件描述符{重定向/perror/磁盘结构/inode/软硬链接}
  • homeword_day1
  • 高清符合要求的SCI图片使用RStudio导出
  • NLP_循环神经网络(RNN)
  • AES算法:数据传输的安全保障
  • 20240202在Ubuntu20.04.6下使用whisper.cpp的CPU模式
  • 用python编写爬虫,爬取房产信息
  • axios get 请求 url 转码 空格转成+,导致请求失败(前端解决)
  • 备战蓝桥杯---搜索(进阶3)
  • Unicode常用属性
  • WebChat——一个开源的聊天应用