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

成品网站nike源码1688免费北京工程建设公共资源交易平台

成品网站nike源码1688免费,北京工程建设公共资源交易平台,深圳市住房和建设局网站和市住宅租赁管理服务中心,优秀专题网站一、什么是工厂函数? 工厂函数(Factory Function)是一种设计模式,其核心是通过一个函数来 创建并返回对象,而不是直接使用 new 或构造函数实例化对象。它封装了对象的创建过程,使代码更灵活、可维护。 二、…

在这里插入图片描述

一、什么是工厂函数?

工厂函数(Factory Function)是一种设计模式,其核心是通过一个函数来 创建并返回对象,而不是直接使用 new 或构造函数实例化对象。它封装了对象的创建过程,使代码更灵活、可维护。


二、工厂函数的目的与作用
目的作用
解耦对象创建逻辑将对象的创建与使用分离,调用者无需关心对象的具体实现细节。
延迟实例化仅在需要时创建对象,避免资源浪费(如内存、CPU)。
支持动态参数根据输入参数返回不同类型的对象(多态性)。
统一接口提供标准化的对象创建方式,便于扩展和维护。

三、工厂函数示例
1. 简单工厂:形状创建

假设需要根据用户输入创建不同形状(圆形、矩形),直接实例化会导致代码冗余和耦合:

# 无工厂函数的问题
if shape_type == 'circle':obj = Circle(radius=5)
elif shape_type == 'rectangle':obj = Rectangle(width=3, height=4)

使用工厂函数优化后:

# 定义形状类
class Circle:def __init__(self, radius):self.radius = radiusclass Rectangle:def __init__(self, width, height):self.width = widthself.height = height# 工厂函数
def shape_factory(shape_type, **kwargs):if shape_type == 'circle':return Circle(**kwargs)elif shape_type == 'rectangle':return Rectangle(**kwargs)else:raise ValueError("Unknown shape type")# 调用
circle = shape_factory('circle', radius=5)
rectangle = shape_factory('rectangle', width=3, height=4)
2. Mininet 中的工厂函数

在 Mininet 自定义拓扑中,lambda: MyTopo() 是一个工厂函数:

# 工厂函数:延迟创建 MyTopo 实例
topos = {'mytopo': (lambda: MyTopo())}

当 Mininet 需要构建拓扑时,会调用 topos['mytopo']() 执行 Lambda 函数,动态生成 MyTopo 实例。


四、工厂函数的优势
1. 避免紧耦合
  • 直接实例化:调用方需知道具体类的构造函数。
  • 工厂函数:调用方只需传递参数,无需了解类细节。
2. 灵活扩展

新增对象类型时,只需修改工厂函数,无需修改调用代码。

# 扩展支持三角形
class Triangle:def __init__(self, base, height):self.base = baseself.height = heightdef shape_factory(shape_type, **kwargs):# 原有逻辑...elif shape_type == 'triangle':return Triangle(**kwargs)
3. 资源管理

延迟实例化可节省内存和计算资源,尤其是在对象创建成本高时(如数据库连接)。


五、工厂函数 vs 直接实例化
场景直接实例化工厂函数
简单对象创建适合(如 obj = MyClass()过渡设计
复杂/条件化创建代码冗余,难以维护统一管理,逻辑清晰
需要延迟加载无法实现天然支持
多态性需求需手动判断类型封装在工厂中,对调用方透明

六、工厂模式的其他形式
  1. 工厂方法模式
    每个子类实现自己的工厂方法(面向对象设计中的经典模式)。

  2. 抽象工厂模式
    创建一组相关或依赖对象的接口(如 GUI 库中的跨平台组件)。


七、总结
  • 核心思想:工厂函数通过封装对象创建逻辑,提升代码的灵活性和可维护性。
  • 在 Mininet 中的应用lambda: MyTopo() 作为工厂函数,确保 Mininet 在运行时动态创建拓扑实例。
  • 适用场景:对象创建逻辑复杂、需要延迟加载或支持多态性时优先使用。

通过合理使用工厂函数,可以显著提高代码的模块化程度,降低系统各部分之间的依赖。


文章转载自:

http://clfzzsxS.wrpxb.cn
http://otG6Xgf5.wrpxb.cn
http://fsDsPAZo.wrpxb.cn
http://OikFScT5.wrpxb.cn
http://WqWG5EJn.wrpxb.cn
http://zvCSFUTD.wrpxb.cn
http://veA9lAVJ.wrpxb.cn
http://TTE5dKTC.wrpxb.cn
http://dXXIHRLz.wrpxb.cn
http://ynWlaCCl.wrpxb.cn
http://O7XLxK1C.wrpxb.cn
http://zd8zHHXa.wrpxb.cn
http://M74lFSan.wrpxb.cn
http://ftczj1yG.wrpxb.cn
http://soXTQ1xg.wrpxb.cn
http://a8m5arRV.wrpxb.cn
http://5Pc1EBsn.wrpxb.cn
http://B7lOFcxB.wrpxb.cn
http://481YuCzZ.wrpxb.cn
http://UpHexL8d.wrpxb.cn
http://1JUzJEm9.wrpxb.cn
http://fAIKgk0s.wrpxb.cn
http://Lrnutq9Q.wrpxb.cn
http://SLg1GnvR.wrpxb.cn
http://o94vpXky.wrpxb.cn
http://XxBWQq3i.wrpxb.cn
http://qB6N7Od5.wrpxb.cn
http://GqXTRFE8.wrpxb.cn
http://uXrMTSLJ.wrpxb.cn
http://TaAL1ycl.wrpxb.cn
http://www.dtcms.com/wzjs/706692.html

相关文章:

  • 网站建设实施流程公司网站赏析
  • 照明公司网站制作wordpress移除子菜单
  • 90设计网站手机版平顶山做网站推广
  • 2015网站设计趋势用自己的电脑做网站划算
  • 电商网站建设c微fzsszaiwordpress文章详情页
  • 免费大空间网站买域名建网站价格
  • 雄安专业网站建设哪家好wordpress整站搬家教程
  • 创卫网站 建设 方案wordpress怎么设置底页
  • 网站后台源代码更改seo搜索引擎优化就业前景
  • 免费域名注册服务网站wordpress页面重定向循环
  • 郑州网站制作价格外卖小程序源码
  • 建网站怎么年赚网站建设对比分析
  • 应聘网站建设工程师广州网站搭建费用
  • 重庆专业网站建设首页排名信息网站的建设
  • 成都微网站潘家园做网站的公司
  • 旅游网站建设目标分析建设网站需要有什么特色
  • 北京网站定制报价安全认证的机票网站成就怎么做
  • 做特效很牛的一个外国网站升华网络推广软件
  • 小说网站排名人气潮州专业网站建设制作
  • 深圳自助网站建设十八款禁用黄台入口app
  • 行业网站建设内容教你如何建设网站
  • 制作京东网站建设都匀市城乡建设局网站
  • 极简个人网站模板石家庄哪有个人建站的
  • 网站建设一般用英文怎么说wordpress 形式
  • 银行网站建设中哪个网站可以做奖状
  • 有没有在网上做ps赚钱的网站网站推广的方法和手段
  • 杭州企业网站制作哪个好无锡做网站f7wl
  • 深圳网站设计 深圳信科企业托管
  • 个人网站主题新浪网页版
  • 网站评价及优化分析报告798艺术区个人拍照图片及价格