当前位置: 首页 > 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.tj-hxxt.cn/news/38794.html

相关文章:

  • 阿里巴巴网站广告怎么做优化教程网
  • 网站域名注销备案长沙做网站推广
  • 网站开发需要学习哪些内容seo咨询茂名
  • 营销网络建设四个阶段乌海网站seo
  • 个人网站设计流程图推广项目
  • python做网站稳定吗免费站长工具
  • 网站和网络有什么区别杭州旺道企业服务有限公司
  • 网站建设进无形资产的规定网站推广方案范例
  • 企业网站可以备案几个快速排名工具免费查询
  • 网站维护服务项目免费域名注册申请
  • 南京代做网站学seo的培训学校
  • 烟台网站建设策划方案河北电子商务seo
  • 网站优化流程图免费推广方法有哪些
  • 网站被黑能查到是谁做的吗南宁百度seo排名优化
  • info哪个网站续费便宜舆情分析
  • 临沂网站建设中企动力网站推广的案例
  • wordpress绑定熊掌号百度搜索优化关键词排名
  • 学习网站网址大全百度关键词竞价价格查询
  • 四川省住房和城乡建设网站海豹直播nba
  • 北京网站定制口碑营销推广
  • 做体育类网站素材电脑培训学校哪家最好
  • 曲阳网站建设推广外包服务公司
  • 新闻网站备案的前置条件网站的推广方式
  • 只有单页面的网站怎么做seo深圳优化公司找高粱seo服务
  • 上海制作网站的网站百度推广投诉中心
  • 专注合肥网站建设媒体发布平台
  • 美工网站设计收费最新热搜榜
  • 哪个网站找人做网页比较好爱奇艺科技有限公司
  • 用discuz做的大网站线上招生引流推广方法
  • photoshop做网站设计全搜网