首页 > 其他分享 >Book-深入设计模式-工厂方法模式

Book-深入设计模式-工厂方法模式

时间:2023-03-05 17:56:04浏览次数:49  
标签:子类 代码 工厂 Book 深入 产品 设计模式 方法

Book-深入设计模式-工厂方法模式

https://refactoringguru.cn/design-patterns/factory-method

工厂方法模式
亦称:虚拟构造函数、Virtual Constructor、Factory Method

工厂方法模式是一种创建型设计模式, 其在父类中提供一个创建对象的方法, 允许子类决定实例化对象的类型。(只是改变了程序中调用构造函数的位置而已)

工厂方法模式适合应用场景

  1. 当你在编写代码的过程中, 如果无法预知对象确切类别及其依赖关系时, 可使用工厂方法。
  2. 如果你希望用户能扩展你软件库或框架的内部组件, 可使用工厂方法。
  3. 如果你希望复用现有对象来节省系统资源, 而不是每次都重新创建对象, 可使用工厂方法。

实现方式

  1. 让所有产品都遵循同一接口。 该接口必须声明对所有产品都有意义的方法。

  2. 在创建类中添加一个空的工厂方法。 该方法的返回类型必须遵循通用的产品接口。

  3. 在创建者代码中找到对于产品构造函数的所有引用。 将它们依次替换为对于工厂方法的调用, 同时将创建产品的代码移入工厂方法。
    可能需要在工厂方法中添加临时参数来控制返回的产品类型。
    工厂方法的代码看上去可能非常糟糕。 其中可能会有复杂的 switch分支运算符, 用于选择各种需要实例化的产品类。 但是不要担心, 我们很快就会修复这个问题。

  4. 为工厂方法中的每种产品编写一个创建者子类, 然后在子类中重写工厂方法, 并将基本方法中的相关创建代码移动到工厂方法中。

  5. 如果应用中的产品类型太多, 那么为每个产品创建子类并无太大必要, 这时你也可以在子类中复用基类中的控制参数。

  6. 如果代码经过上述移动后, 基础工厂方法中已经没有任何代码, 你可以将其转变为抽象类。 如果基础工厂方法中还有其他语句, 你可以将其设置为该方法的默认行为。

标签:子类,代码,工厂,Book,深入,产品,设计模式,方法
From: https://www.cnblogs.com/yongchao/p/17181101.html

相关文章

  • 《设计模式之禅》Strategy_Pattern--策略模式
    写在前面设计模式之禅这本书也是博主看了几本设计模式的开头才决定以这本书作为学习设计模式的资料。像小傅哥的重学Java设计模式,好处是以真实的项目案例的逻辑来搭配设计模......
  • Jupter Notebook 常见问题
    不会自动打开浏览器问题https://www.iotword.com/6147.html默认工作路径的设置https://www.cnblogs.com/yuyanc/p/16434487.html导入ipynb文件方法https://www.cnblog......
  • 深入理解ThreadLocal
    在java的多线程模块中,ThreadLocal是经常被提问到的一个知识点,因此只有理解透彻了,不管怎么问,都能游刃有余。本文主要从以下几个角度来分析理解1、ThreadLocal是什么2、......
  • 深入浅出通信原理
    https://www.txrjy.com/thread-394879-1-4.html 从2010年4月8日开始在C114通信人家园上线连载,从多项式乘法讲起,一步一步引出卷积、傅立叶级数展开、旋转向量、三维频谱......
  • MacBook里从微信上下载文件后打开,都显示的只读模式,怎么解决?
    yds@ydsdeAir~%sudochmod-R755/Users/yds/Library/Containers/com.tencent.xinWeChat/Data/Library/Application\Support/com.tencent.xinWeChat/可以修改微信文......
  • 设计模式篇之一文搞懂如何实现单例模式
    设计模式篇之一文搞懂如何实现单例模式大家好,我是小简,这一篇文章,6种单例方法一网打尽,虽然单例模式很简单,但是也是设计模式入门基础,我也来详细讲讲。DEMO仓库:https://gi......
  • MacBookPro安装Windows10单系统的4个小坑
    MacbookPro安装Windows10 从入门到精通0、前言:一个朋友买了MacBookPro一直用Mac系统,因为工作原因经常涉及到Office的一些功能,使用起来多有不便于是让我帮忙看看......
  • 深入理解webpack的chunkId对线上缓存的思考(转载)
    转载自 https://juejin.cn/post/6844903924818771981#heading-6 作者:Kimm想必经常使用基于webpack打包工具的框架的同学们,无论是使用React还是Vue在性能优化上使用最......
  • Book-深入设计模式
    Book-深入设计模式https://refactoringguru.cn/design-patternshttps://github.com/RefactoringGuruhttps://github.com/RefactoringGuru/design-patterns-cpp设计模......
  • php之Opcache深入理解
    PHP项目中,尤其是在高并发大流量的场景中,如何提升PHP的响应时间,是一项十分重要的工作。而Opcache又是优化PHP性能不可缺失的组件,尤其是应用了PHP框架的项目中,作用更是明显。......