设计模式 - 工厂方法
1.设计模式6原则 2.设计模式23种3.设计模式 - 单例模式4.设计模式 - 原型模式5.设计模式 - 抽象工厂
6.设计模式 - 工厂方法
7.设计模式 - 解释器模式8.设计模式 - 代理模式9.设计模式 - 外观模式10.设计模式 - 装饰者模式11.设计模式 - 组合模式12.设计模式 - 适配器模式13.设计模式 - 桥接模式14.设计模式 - 建造者模式15.设计模式 - 享元模式16.设计模式 - 策略模式17.设计模式 - 访问者模式18.设计模式 - 状态模式19.设计模式 - 迭代器模式20.设计模式 - 观察者模式21.设计模式 - 命令模式22.设计模式 - 中介者模式23.设计模式 - 备忘录模式24.设计模式 - 职责链模式25.设计模式 - 模板方法模式定义
Define an interface for creating an object, but let subclasses decide which class to instantiate.
Factory Method lets a class defer instantiation to subclasses.
Also known as: Virtual Constructor
UML
- 类接口
- 具体类
- 工厂基类,创建对象的接口。可在调用者的方法中传入具体工厂进行初始化。
- 具体工厂,子类实例化。
1、3是稳定的,2、4是变化的。
实例
多地日志记录,不同对象的分割处理
在编写代码时,无法预知对象确切类别及其依赖关系时(延迟);
希望用户能扩展软件库或框架的内部组件时;
希望复用现有对象来节省系统资源(数据库连接、文件系统、网络资源等),而不是每次都重新创建对象;
比较
此模式绕开new,来避免对象创建(new)过程中所导致的紧耦合(依赖具体类),保持对象创建的稳定。它是接口抽象之后的第一步工作。
开发初期都会使用此模式,解决“单个对象”的需求变化(简单,可通过子类进行定制),随后演化为使用 抽象工厂、原型模式、生成器等更灵活、更复杂的模式。
比较 | 工厂方法 | 备注 |
---|---|---|
抽象工厂 | 一组工厂方法可扩展为抽象工厂 | 抽象工厂通常基于一组工厂方法 |
迭代器 | 同时使用工厂方法和迭代器来让子类集合返回不同类型的迭代器,并使得迭代器与集合相匹配 | |
原型 | 工厂方法基于继承,但不需要初始化步骤 | 原型不基于继承,但需要对被复制对象进行复杂的初始化 |
模板方法 | 工厂方法是模板方法的一种特殊形式,可以作为一个大型模板方法中的一个步骤 | |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
2021-04-21 Ling应用