设计模式之 abstract factory

server/2024/12/22 1:41:57/

适用场景

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

架构演示

在这里插入图片描述

首先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.ppmy.cn/server/152098.html

相关文章

12.16 深度学习-混合注意力CBAM

# 混合注意力机制(Hybrid Attention Mechanism)是一种结合空间和通道注意力的策略,旨在提高神经网络的特征提取能力。 # 空间和通道都加上去 # CBAM是一种轻量级的注意力模块,它通过增加空间和通道两个维度的注意力,来…

word实现两栏格式公式居中,编号右对齐

1、确定分栏的宽度 选定一段文字 点击分栏:如本文的宽度为22.08字符 2、将公式设置为 两端对齐,首行无缩进。 将光标放在 公式前面 点击 格式-->段落-->制表位 在“制表位位置”输入-->11.04字符(22.08/211.04字符)&…

arcgisPro相接多个面要素转出为完整独立线要素

1、使用【面转线】工具,并取消勾选“识别和存储面邻域信息”,如下: 2、得到的线要素,如下:

DeepSeek-V2的多头潜在注意力机制及其在开源Mixture-of-Experts (MoE)语言模型中的应用

DeepSeek-V2的多头潜在注意力机制及其在开源Mixture-of-Experts (MoE)语言模型中的应用 DeepSeek-V2的架构及其优势 DeepSeek-V2的架构及其优势可以从几个关键方面进行深入探讨: 1. 架构设计 DeepSeek-V2是一个基于Mixture-of-Experts(MoE&#xff0…

Spring Boot + Dubbo 的整合 ,仅需六步

Spring Boot 与 Dubbo 的整合 1. 添加依赖 <dependencies><!-- Spring Boot Starter --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter</artifactId></dependency><!-- Dubb…

Apache 如何监听多个端口 ?

Apache 是一个广泛使用的 web 服务器&#xff0c;可以配置为侦听多个端口。这对于托管多个网站、运行不同类型的服务或改进服务器的可访问性特别有用。在本文中&#xff0c;我们将探讨配置 Apache 以侦听多个端口的步骤。 Step 1: Access Apache Configuration File 找到并打…

免费GIS工具箱:轻松将glb文件转换成3DTiles文件

在GIS地理信息系统领域&#xff0c;GLB文件作为GLTF文件的二进制版本&#xff0c;主要用于3D模型数据的存储和展示。然而&#xff0c;GLB文件的使用频率相对较低&#xff0c;这是因为GIS系统主要处理的是地理空间数据&#xff0c;如地图、地形、地貌、植被、水系等&#xff0c;…

Day27 - 大模型微调,LLaMA搭建

指令微调 SFT&#xff1a;Supervised Fine - Tuning 自我认知 self-cognitionidentity私有知识 / 具体任务公共知识 LLaMA-Factory 搭建过程 1. 下载 LLaMA-Factory 源代码 ​git clone https://github.com/hiyouga/LLaMA-Factory.git 2. 安装 LLaMA-Factory 依赖包 cd L…