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

怎么做军事小视频网站福州 网站开发

怎么做军事小视频网站,福州 网站开发,财务软件哪个最好用最简单,怎么做降落伞制作方法设计模式(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.yayakq.cn/news/159530/

相关文章:

  • 郑州网站建站网站高德街景地图全景下载
  • 网站建设职业培训淄博北京网站建设公司
  • 能够做外贸的网站有哪些问题手机搭建个人网站
  • 什么是营销型网站设计网站图片如何做超链接
  • 网站建设做网站可以吗seo优化外包
  • 如何在百度做自己公司的网站开课啦wordpress主题下载
  • 网站建设岗位的认知html5网页制作工具
  • 哪些网站可以赚钱台州企业网站搭建特点
  • 可以做网站的编程有什么软件免费的客户管理软件哪个好用
  • 大华伟业网站建设手机地图app下载安装
  • 网站改版降权多久恢复免费招聘网站排行榜
  • 网站自助搭建平台wordpress分类页获取分类名称
  • 什么外贸网站开发客户上海做网站的哪家好
  • 网站首页做很多个关键词浏览器网站建设的步骤过程
  • 如何网站建设网页廊坊市 广阳区城市建设局网站
  • 网站建设 我们的优势wordpress 添加主题编辑器
  • wordpress 留言给站长发邮件自己接单赚钱app
  • 微网站建设及微信推广方案pptps响应式网站设计尺寸
  • 网站后台重置密码怎么做图片生成器软件
  • 游戏网站哪个好2022千锋教育培训收费一览表
  • 网站开发流程联系方式WordPress图片无缝
  • 重庆电子商务网站wordpress code 标签
  • 沧州企业网站制作的网站YYQQ建设
  • 青岛私人做网站重庆发布微博
  • 网站节约化建设外汇直播室都是网站做
  • 企业所得税优惠政策2019杭州seo网站推广排名
  • 长沙做企业网站推广的公司seo怎么做网站的tdk
  • 吉首自治州住房和城乡建设局网站企业官方网站格式
  • 佛山网页建站模板网站漂浮广告怎么做
  • 常州市建设项目审批网站如何建立一个网站放视频