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

删除西部数码网站管理助手百度一下百度主页

删除西部数码网站管理助手,百度一下百度主页,个人注册公司每年费用,wordpress当前文章标题设计模式(10)——创建型模式之抽象工厂 什么是抽象工厂?抽象工厂的结构抽象工厂伪代码抽象工厂适合应用场景 什么是抽象工厂? 抽象工厂(Abstract Factory)是一种创建型设计模式,它能创建一系列…

设计模式(10)——创建型模式之抽象工厂

      • 什么是抽象工厂?
      • 抽象工厂的结构
      • 抽象工厂伪代码
      • 抽象工厂适合应用场景

请添加图片描述

什么是抽象工厂?

抽象工厂(Abstract Factory)是一种创建型设计模式,它能创建一系列相关的对象,而无需指定其具体类。

抽象工厂的结构

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

  1. 抽象产品(Abstract Product)为构成系列产品的一组不同但相关的产品声明接口
  2. 具体产品(Concrete Product)是抽象产品的多种不同类型实现。所有变体都必须实现响应的抽象产品
  3. 抽象工厂(Abastract Factory)接口声明了一组创建各种抽象产品的方法
  4. 具体工厂(Concrete Factory)实现抽象工厂的构建方法。每个具体工厂都对应特定产品变体,且仅创建此种产品变体
  5. 客户端(Client)只需要通过抽象接口调用工厂和产品对象,就能与任何具体工厂/产品变体交互

抽象工厂伪代码

假如我们正在开发一款应用程序,会用到按钮(button)和复选框(checkbox),要支持Windows与Mac两种操作系统。为了提高代码可复用性,不想为每种操作系统维护单独的代码,我们可以应用抽象工厂模式。将按钮(button)和复选框(checkbox)作为抽象产品,不同的操作系统实现不同的具体产品,并提供配套的具体工厂。应用程序(Application)作为客户端调用抽象工厂创建不同操作系统下的按钮和复选框。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

// 抽象工厂接口声明了一组能返回不同抽象产品的方法。这些产品属于同一个系列
// 且在高层主题或概念上具有相关性。同系列的产品通常能相互搭配使用。系列产
// 品可有多个变体,但不同变体的产品不能搭配使用。
interface GUIFactory ismethod createButton():Buttonmethod createCheckbox():Checkbox// 具体工厂可生成属于同一变体的系列产品。工厂会确保其创建的产品能相互搭配
// 使用。具体工厂方法签名会返回一个抽象产品,但在方法内部则会对具体产品进
// 行实例化。
class WinFactory implements GUIFactory ismethod createButton():Button isreturn new WinButton()method createCheckbox():Checkbox isreturn new WinCheckbox()// 每个具体工厂中都会包含一个相应的产品变体。
class MacFactory implements GUIFactory ismethod createButton():Button isreturn new MacButton()method createCheckbox():Checkbox isreturn new MacCheckbox()// 系列产品中的特定产品必须有一个基础接口。所有产品变体都必须实现这个接口。
interface Button ismethod paint()// 具体产品由相应的具体工厂创建。
class WinButton implements Button ismethod paint() is// 根据 Windows 样式渲染按钮。class MacButton implements Button ismethod paint() is// 根据 macOS 样式渲染按钮// 这是另一个产品的基础接口。所有产品都可以互动,但是只有相同具体变体的产
// 品之间才能够正确地进行交互。
interface Checkbox ismethod paint()class WinCheckbox implements Checkbox ismethod paint() is// 根据 Windows 样式渲染复选框。class MacCheckbox implements Checkbox ismethod paint() is// 根据 macOS 样式渲染复选框。// 客户端代码仅通过抽象类型(GUIFactory、Button 和 Checkbox)使用工厂
// 和产品。这让你无需修改任何工厂或产品子类就能将其传递给客户端代码。
class Application isprivate field factory: GUIFactoryprivate field button: Buttonconstructor Application(factory: GUIFactory) isthis.factory = factorymethod createUI() isthis.button = factory.createButton()method paint() isbutton.paint()// 程序会根据当前配置或环境设定选择工厂类型,并在运行时创建工厂(通常在初
// 始化阶段)。
class ApplicationConfigurator ismethod main() isconfig = readApplicationConfigFile()if (config.OS == "Windows") thenfactory = new WinFactory()else if (config.OS == "Mac") thenfactory = new MacFactory()elsethrow new Exception("错误!未知的操作系统。")Application app = new Application(factory)

抽象工厂适合应用场景

  • 如果代码需要与多个不同系列的相关产品交互, 但是由于无法提前获取相关信息, 或者出于对未来扩展性的考虑, 你不希望代码基于产品的具体类进行构建, 在这种情况下, 你可以使用抽象工厂。

  • 抽象工厂为你提供了一个接口, 可用于创建每个系列产品的对象。 只要代码通过该接口创建对象, 那么你就不会生成与应用程序已生成的产品类型不一致的产品。

  • 如果你有一个基于一组抽象方法的类, 且其主要功能因此变得不明确, 那么在这种情况下可以考虑使用抽象工厂模式。

  • 在设计良好的程序中, 每个类仅负责一件事。 如果一个类与多种类型产品交互, 就可以考虑将工厂方法抽取到独立的工厂类或具备完整功能的抽象工厂类中。

http://www.dtcms.com/wzjs/45140.html

相关文章:

  • 帮别人做彩票网站吗网站推广软件
  • 阿里云上可以做网站吗上海培训机构
  • 影视logo免费设计seo网络推广怎么做
  • 精装房软装设计公司山西seo推广
  • 阳泉建设网站的公司2023年国家免费技能培训
  • 网站建设需要哪些东西站长工具排行榜
  • 万网域名注册官网中文域名优化官网咨询
  • 网站注册 优帮云如何自己做一个网页
  • 网站建设 网站新产品推广方案怎么写
  • ps教程自学网官网百度seo优化怎么做
  • 做机械出口用哪个网站好东莞网络公司排行榜
  • 建站本武汉seo优化公司
  • erp .net网站开发建网站的公司排名
  • 企业网站程序商丘seo教程
  • 个人网站空间怎么做汕头百度网站排名
  • 苏州网站营销公司简介百度一级代理商
  • 用visual做网站最近热点新闻事件2023
  • wordpress设置默认头像网站怎么优化推荐
  • 前端做微网站名站在线
  • 怎么设计海报图片什么是seo优化推广
  • 中国风电商网站建设百度开户代理公司
  • 教你做cpa单页网站友情链接免费发布平台
  • 网站设计策划书案例广东省自然资源厅
  • 鄄城网站制作seo网站推广专员
  • 网站关键词排名怎么做在线看网址不收费不登录
  • 专业服务建设网站加强服务保障满足群众急需i
  • 下载网站源代码app营销
  • 房产销售网站设计网站seo优化方案设计
  • 重庆智能网站建设价格网站统计系统
  • 水务 网站建设服务器ip域名解析