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

怎么做合买彩票网站怎么做像知乎一样的网站

怎么做合买彩票网站,怎么做像知乎一样的网站,遵义上网,旅游网站开发意义和价值定义 简单工厂模式是一种创建型设计模式,它通过一个工厂类来创建对象,而不是通过客户端直接实例化对象。 结构 工厂类(Factory):负责创建对象的实例。工厂类通常包含一个方法,根据输入参数的不同创建并返…

定义

简单工厂模式是一种创建型设计模式,它通过一个工厂类来创建对象,而不是通过客户端直接实例化对象。

结构

在这里插入图片描述
工厂类(Factory):负责创建对象的实例。工厂类通常包含一个方法,根据输入参数的不同创建并返回不同的对象
产品类(Product):工厂类创建的对象接口或抽象类,所有具体产品类需要实现或继承这个接口或抽象类。
具体产品类(ConcreteProduct):实现了产品接口的具体类。

应用场景

  1. 多种产品对象的创建:当系统需要创建多种类型的对象(不宜过多),而且这些对象有着相似的结构或接口时,可以使用简单工厂模式来集中管理对象的创建逻辑。这有助于提高代码的可维护性和扩展性。例如,不同类型的图形对象、不同类型的报表生成器等。
  2. 避免直接实例化复杂对象:当对象的创建过程较为复杂,涉及多种初始化步骤时,可以使用简单工厂模式,将这些初始化步骤封装在工厂类中,简化客户端代码。例如,不同类型的数据库连接、复杂的对象初始化流程等。

优缺点

优点:

  1. 简化客户端代码:客户端代码不需要了解具体产品类的创建细节,只需调用工厂类的创建方法即可获得所需的对象。这减少了客户端代码的复杂性,使其更容易维护和理解。
  2. 集中管理对象的创建:对象的创建逻辑集中在工厂类中,便于统一管理和控制。这有助于在一个地方进行修改和调整,从而避免在多个地方重复修改代码,提高了代码的可维护性。
  3. 便于扩展:当需要增加新产品类时,只需在工厂类中添加相应的创建逻辑,客户端代码无需修改。这使得系统在一定程度上具有较好的扩展性。

缺点:

  1. 违背开闭原则:每当需要添加新的产品类型时,都必须修改工厂类以添加新的创建逻辑。这违反了开闭原则,增加了维护成本。
  2. 违背单一职责原则:工厂类不仅负责创建对象,还承担了对象的选择逻辑,可能会导致工厂类变得复杂,难以维护。
  3. 不可避免的条件判断:工厂类中通常会包含大量的条件判断语句(如if-else或switch-case),用于确定需要创建哪种类型的对象。这些条件判断语句会随着产品种类的增加而变得冗长且复杂。

代码示例

from abc import ABC, abstractmethodclass Shape(ABC):@abstractmethoddef draw(self):passclass Circle(Shape):def draw(self):return "Drawing a Circle"class Rectangle(Shape):def draw(self):return "Drawing a Rectangle"class ShapeFactory:@staticmethoddef create_shape(shape_type):if shape_type == "CIRCLE":return Circle()elif shape_type == "RECTANGLE":return Rectangle()else:raise ValueError("Unknown shape type")if __name__ == "__main__":# 使用工厂类创建对象shape = ShapeFactory.create_shape("CIRCLE")print(shape.draw())  # 输出: Drawing a Circleshape = ShapeFactory.create_shape("RECTANGLE")print(shape.draw())  # 输出: Drawing a Rectangle

参考

《设计模式的艺术》

http://www.15wanjia.com/news/178138.html

相关文章:

  • 网站后台如何上传附件怎么创建网页链接快捷方式
  • 网站技术团队色盲
  • 友情连接seo简介
  • 三好街做网站的目前网站开发有什么缺点
  • 如何在行业门户网站上做推广各家建站平台
  • 保定网站建设解决方案哈尔滨住房和城乡建设信息网官网
  • 写作墨问题 网站网址大全免费
  • 网站备案管理系统做微视频的网站
  • 手机端网站模板东莞有多少个镇区
  • 万网空间存放两个网站百度网站关键词优化
  • 如何做一张图片的网站wordpress手机登陆
  • 广州购物网站设计wordpress 插件开发
  • 个人做的网站能备案吗做购物网站小图标
  • H5网站整站网页设计图片剧中
  • 厦门百度搜索网站排名优化大师怎么提交作业
  • 网站建设扁平化如何挑选网站建设平台
  • 网站反向绑定域名怎么免费做个人网站
  • 网站开发菜鸟教程我想做个软件平台要多少钱
  • 江苏做网站的企业证书查询网免费查询
  • 黑河建设网站济南手机网站建设
  • 郑州高端网站建设是什么意思备案核验单 网站类型
  • 上海建站 seo国外ps设计图网站
  • 工商局网站如何做网登上海抖音代运营公司
  • 东莞网站建设少儿托管室内装修装饰设计培训班
  • 优化大师电脑版官方吉林seo基础知识
  • 无锡前洲行业网站建设重庆最近的新闻大事
  • 青岛网站开发学校最好的wordpress教程
  • 西部数码做的网站打不开公司网站建设征求意见表
  • 如何查看网站权重php开发网站建设书籍
  • 石家庄哪里可以做网站手机网站用什么软件做的