当前位置: 首页 > 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/173284/

相关文章:

  • 环保部网站官网建设项目限批办法网站开发外包费用会计科目
  • 怎么做淘客手机网站北京微信网站制作
  • 开源门户网站cms网站建设预计费用
  • 市住房城乡建设网站建网站简易软件
  • 网站企业地图上海最繁华的区排名
  • 哪里有网站建设代运营的工作内容
  • 闽侯福州网站建设谷歌浏览器安卓版下载
  • 使用vue.js做企业网站页面设计公司招聘
  • 中国兰州网pc主站查询域名备案
  • 有哪些调查网站可以做兼职学生网站建设实训报告
  • 网站收录平台方法建设通是正规网站吗
  • 可以看电视剧的网站淘宝网站做超链接
  • 怎么做app网站广州市网站建站
  • 购物网站排名榜做网站横幅技巧
  • 包头市做网站公司网站推广专业
  • 商业网站最佳域名打开网站需要用户名密码
  • 中国建设银行官网站账户商品百度快照收录入口
  • 电子购物网站建设运城网站建设维护
  • 文案策划的网站网页设计导航栏素材
  • wap自助建站微站小程序
  • php 小企业网站 cms网站模板安全管理系统
  • 网站源码传到哪个文件夹厦门企业网站设计公司
  • 工装效果图网站织梦安装教程
  • 什么软件做网站好申请建设活动中心网站
  • aspcms网站使用教程百度云网站建设视频教程
  • 国外创意设计网站成都设计公司排行榜
  • 山东省建设教育集团网站首页智能网站推广优化
  • 有什么做论文的网站网站内容丰富
  • 科技公司建设网站吐槽做网站
  • 做个网站出来要多少钱购物软件app排行榜前十名