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

工厂方法模式之Factory Method(工厂方法)

工厂方法模式之Factory Method(工厂方法)

1.前言:

工厂方法模式是一种创建型设计模式,它将对象实例化延迟到子类。该模式通过定义一个创建对象的接口,让子类决定实例化哪个类,实现了父类与具体产品的解耦。结构上包含抽象工厂接口、具体工厂类、抽象产品和具体产品四个要素。相比简单工厂模式,工厂方法模式更具扩展性,符合开闭原则,但会引入更多类。示例代码展示了如何使用工厂方法创建不同产品(ProductA/ProductB)的过程,体现了"父类对象指向子类实例"的多态特性。这种模式适用于需要灵活扩展产品类型的场景。

1.简单工厂 -->> 2.工厂方法 -->> 3.抽象工厂 -->> 4.生成器 -->> 5.原生 —>> 6.单例

1,设计模式的核心在于提供了相关问题的解决方案,使得人们可以更加简单方便地复用成功的设计和体系结构

2.设计模式基本要素:

  • 模式名称(Pattern Name)
  • 问题(Problem)
  • 解决方案(Solution)
  • 效果(Consequences)
    在这里插入图片描述

1)意图:定义一个用于创建对象的接口,让子类决定实例化哪一个类。Factory Method 使一个类的实例化延迟到其子类。

2)结构:创建型类模式

在这里插入图片描述

3.代码

/*** 工厂方法模式  */
public class SimpleFactory {public static void main(String[] args) {// 父类 对象名 = new 子类();Factory factoryA = new FactoryA();Product productA = factoryA.createProduct();productA.info();Factory factoryB = new FactoryB();Product productB = factoryB.createProduct();productB.info();}
}interface Factory {public Product createProduct();
}class FactoryB implements Factory{@Overridepublic Product createProduct() {return new ProductB();}
}
class FactoryA implements Factory{@Overridepublic Product createProduct() {return new ProductA();}
}interface Product {void info();
}class ProductA implements Product {public void info() {System.out.println("A产品");}
}class ProductB implements Product {public void info() {System.out.println("B产品");}
}

喜欢我的文章记得点个在看,或者点赞,持续更新中ing…

http://www.xdnf.cn/news/664003.html

相关文章:

  • Python网络编码——聊天小工具
  • 2025年中国ERP软件前十名对比:选型指南与适用场景的分析
  • 数控滑台技术革新:提升生产效率的关键
  • [浏览器]缓存策略机制详解
  • (12)Quarkus 编译时增强原理
  • GIS局部放电图绘制指南
  • UE 骨骼模型 会没有face index的原因
  • IPv6能自动分配地址,就不需要DHCP服务器了吗?
  • Unity3D仿星露谷物语开发52之菜单页面
  • RK3568DAYU开发板-平台驱动开发:GPIO驱动
  • 冒险岛 职业名及代码
  • 为什么需要清除浮动?清除浮动的方式有哪些?
  • day28:零基础学嵌入式之进程2
  • MQTT通信协议
  • [面试精选] 0076. 最小覆盖子串
  • Linux多线程(二)之进程vs线程
  • Cell Metab.|复旦大学储以微、骆菲菲团队:Foxp3改造CAR-T,从「能量危机」到「代谢续航」的实体瘤治疗新路径
  • Android GPU Inspector深度解析:从零掌握驱动级性能数据抓取与优化
  • FastAPI 中间件
  • 电子标签倒计时应用
  • 从自发到赋能:产品经理的成长与 AI 时代的自我重塑
  • 测试W5500的第7步_使用ioLibrary库创建HTTP客户端
  • Linux中SHELL脚本常用命令
  • 安卓实用复制功能增强工具
  • 【杂谈】STM32使用快速傅里叶变换库函数后如何比较准确地找到n次谐波幅值
  • Python不要使用可变对象作为函数的默认参数
  • 记忆术-拼音字母形象法【针对“音形义“里谐音法的补充记忆法】
  • 布局泰国遇网络难题?中泰跨境网络组网专线成破局关键
  • Unity中的文件读写TXT 与XML
  • java中的线程安全的集合