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

设计模式之简单工厂模式

简单工厂模式不是一个正式的设计模式,但它是工厂模式的基础。它使用一个单独的工厂类来创建不同的对象,根据传入的参数决定创建哪种类型的对象。

简单工厂模式包含以下几个主要角色:

  • 抽象产品(Abstract Product):定义了产品的共同接口或抽象类。它可以是具体产品类的父类或接口,规定了产品对象的共同方法。
  • 具体产品(Concrete Product):实现了抽象产品接口,定义了具体产品的特定行为和属性。

  • 具体工厂(Concrete Factory):根据不同的参数决定创建哪种类型的对象。

优点

  1. 调用者只需要知道对象的名称即可创建对象。
  2. 屏蔽了产品的具体实现,调用者只关心产品的接口。

缺点

每次增加一个产品时,都需要修改具体工厂中的代码,违反了OCP开闭原则

代码案例

public class SimpleFactory {  public static Product createProduct(String type) {  //  新增其他产品就得修改代码  if ("A".equals(type)) {  return new ProductA();  } else {  return new ProductB();  }  }  
}  abstract class Product {  public abstract void show();  
}  class ProductA extends Product {  @Override  public void show() {  System.out.println("Product A");  }  
}  class ProductB extends Product {  @Override  public void show() {  System.out.println("Product B");  }  
}  class Client {  public static void main(String[] args) {  Product product = SimpleFactory.createProduct("A");  product.show();  product = SimpleFactory.createProduct("B");  product.show();  }  
}

程序输出

Product A
Product B
http://www.xdnf.cn/news/728371.html

相关文章:

  • 前端面试准备-3
  • openssl-aes-ctr使用openmp加速
  • Java大师成长计划之第35天:未来展望与个人总结
  • shell编程笔记
  • 预处理深入详解:预定义符号、宏、命名约定、命令行定义、条件编译、头文件的包含
  • 【大模型】情绪对话模型项目研发
  • C++继承与构造函数调用详解
  • flash写失败分析
  • Linux系统编程收尾(35)
  • 【C/C++】cmake实现Release版本禁用调试接口技巧
  • [定昌linux开发板]启用用户唯一性限制
  • Android全局网络监控最佳实践(Kotlin实现)
  • 从Java的Jvm的角度解释一下为什么String不可变?
  • Spring Boot3.4.1 集成redis
  • 自动过滤:用 AutoFilterer 实现高性能动态查询
  • 怎么从一台电脑拷贝已安装的所有python第三方库到另一台
  • 分库分表的常见策略
  • Arduino学习-跑马灯
  • day 26 函数专题
  • 基于云模型与TOPSIS评价算法的综合应用研究
  • 深度刨析树结构(从入门到入土讲解AVL树及红黑树的奥秘)
  • 深入理解Transformer架构:从原理到实践
  • python中 @注解 及内置注解 的使用方法总结以及完整示例
  • Jenkins 2.479.1安装和邮箱配置教程
  • SkyWalking如何实现跨线程Trace传递
  • 权威认证与质量保障:第三方检测在科技成果鉴定测试中的核心作用
  • 【C语言编译与链接】--翻译环境和运行环境,预处理,编译,汇编,链接
  • 怎么用外网打开内网的网址?如在异地在家连接访问公司局域网办公网站
  • DeepSeek 赋能数字人直播带货:技术革新重塑电商营销新生态
  • 处理知识库文件_编写powershell脚本文件_批量转换其他格式文件到pdf文件---人工智能工作笔记0249