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

设计模式之 abstract factory

适用场景

  • 一个系统要独立于它的产品的创建、组合和表示时。
  • 一个系统要由多个产品系列中的一个来配置时。
  • 当你要强调一系列相关的产品对象的设计以便进行联合使用时。
  • 当你提供一个产品类库,而只想显示它们的接口而不是实现时

架构演示

在这里插入图片描述

首先client这个东西可以接触到三个接口, 分别是

  • 全局的 abstract factory, 用来构造对应的子 abstract factory
  • 然后我们可以通过子 abstract factory 去构造相应的 abstract product
  • 局部的 abstract product, 用来从上面的 abstract factory 获取对应的属性

好处就是:

  1. abstract factory 约束了创建接口的行为
  2. abstract product 约束了对应产品的行为

代码演示

首先创建一个工厂接口

type ISportFactory interface {MakeShoe() IShoeMakeShirt() IShirt
}

对应的一个产品, 我们可以通过抽象工厂搞出来的两个东西

type IShoe interface {setLogo(logo string)setSize(size int)getLogo() stringGetSize() int
}type IShirt interface {setLogo(logo string)setSize(size int)getLogo() stringGetSize() int
}

我们首先看一下对应的工厂函数:

func GetSportsFactory(brand string) ISportFactory {if brand == "adidas" {return &Adidas{}}if brand == "nike" {return &Nike{}}return nil
}

然后我们看实例的具体实现也就是makeshoe

func (adids *Adidas) MakeShoe() IShoe {return &AdidsShoe{Shoe: Shoe{logo: "adidas",size: 10,},}
}

同样的我们可以到

//实现了ishoe接口
type Shoe struct {logo stringsize int
}
http://www.lryc.cn/news/508030.html

相关文章:

  • 汽车IVI中控开发入门及进阶(三十八):手机投屏HiCar开发
  • Springmvc,spring ,mybatis,整合,ssm
  • 《庐山派从入门到...》板载按键启动!
  • Mapbox-GL 中 `token` 的使用
  • Flutter组件————PageView
  • c#自定义事件
  • 【读书笔记】《论语别裁》寂寞的享受
  • Oracle筑基篇-调度算法-LRU的引入
  • 单元测试-Unittest框架实践
  • linux驱动:6ull(3)自动分配设备号来创建led驱动
  • GM_T 0039《密码模块安全检测要求》题目
  • 第四届电气工程与控制科学
  • LabVIEW在电液比例控制与伺服控制中的应用
  • 植物大战僵尸杂交版v3.0.2最新版本(附下载链接)
  • 车辆重识别代码笔记12.19
  • linux内核网络分层概述
  • H3C交换机配置 telnet 服务
  • 江苏计算机专转本 技能Mysql知识点总结(二)
  • 边缘智能网关助力打造建筑智慧消防物联网
  • 学习Cookie 提升
  • OpenAI 发布会 9 天技术总结
  • 免费注册.news域名一年(今日有效)
  • 解决JIRA、Confluence用户自动注销、反复登录的问题
  • Oracle创建逻辑目录
  • 【AIGC-ChatGPT进阶副业提示词】星际占卜师:探索星象能量的艺术【限时免费阅读,一天之后自动进入进阶课程】
  • 泷羽sec-shell编程(9)
  • 【Vue-4小时速通01-ES6】
  • 基于STM32的智能仓储环境监测的Proteus仿真
  • logback日志控制台打印与写入文件
  • 成方金融科技后端部分笔试题 - 解析