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

Golang|工厂模式

  • 工厂模式是一种创建型设计模式,它的核心思想是:把对象的创建过程封装起来,不直接在代码中 new 一个对象,而是通过一个“工厂”来生成对象。
  • 这样做的好处是:
    • 降低了代码之间的耦合(依赖具体类减少)
    • 更方便扩展和维护(想换对象,只需要改工厂逻辑)
  • 工厂模式 = 把"创建对象"这件事封装起来,让代码更灵活、更易扩展、更易维护。

在这里插入图片描述

// 以简单工厂模式为例,假设我们要生产小狗和小猫对象:package mainimport "fmt"// 1. 定义动物接口
type Animal interface {Speak()
}// 2. 具体的狗结构体
type Dog struct{}func (d Dog) Speak() {fmt.Println("汪汪!")
}// 3. 具体的猫结构体
type Cat struct{}func (c Cat) Speak() {fmt.Println("喵喵!")
}// 4. 工厂类
type AnimalFactory struct{}// CreateAnimal 是工厂方法
func (a AnimalFactory) CreateAnimal(animalType string) Animal {switch animalType {case "dog":return Dog{}case "cat":return Cat{}default:return nil}
}// 5. 主函数(客户端使用)
func main() {factory := AnimalFactory{}animal1 := factory.CreateAnimal("dog")if animal1 != nil {animal1.Speak() // 输出:汪汪!}animal2 := factory.CreateAnimal("cat")if animal2 != nil {animal2.Speak() // 输出:喵喵!}
}

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

  • 工厂模式用于生成符合统一接口的KV数据库实例。
  • 工厂函数getKVDB接受数据库类型和本地存储路径作为参数,返回一个IKeyValueDB接口。
  • 工厂函数内部根据参数创建具体的数据库实例,如Badger或Boat,并打开数据库。
  • 工厂模式的思想是能够生成多种产品,但所有产品都实现同一个接口。

相关文章:

  • 网络安全实战指南:从安全巡检到权限维持的应急响应与木马查杀全(命令查收表)
  • 后缀数组~
  • 区块链vs实体经济:一场金融、医疗、政务与物流的“效率革命”
  • 优化问题中变量分类与作用分析
  • JavaWeb学习打卡-Day5-Spring事务管理、SpringAOP
  • 系统传输慢,多路复用还不行,加多物理链路buff
  • 同时安装多个版本的golang
  • 账户解封无望?3步高效申诉取回亚马逊冻结资金
  • 【计网】计算机网络的类别与性能
  • LM393比较器的比较翻转电压不对
  • 微信小程序-van-uploader的preview-size
  • 品融天猫代运营服务内容详解:专业化体系驱动品牌增长
  • 策略模式:灵活的算法封装与切换
  • 从灰色地带走向阳光监管的漏洞产业
  • [蓝桥杯刷题]---模拟法[2]日期问题
  • 【Nginx】 使用least_conn负载均衡算法是否能将客户端的长连接分散到不同的服务器上demo
  • 行政区划代码
  • 需要掌握的前端安全概念以及实操
  • 第8讲:坐标轴与刻度优化指南(字体、角度、格式处理)
  • 【C到Java的深度跃迁:从指针到对象,从过程到生态】第四模块·Java特性专精 —— 第十六章 多线程:从pthread到JMM的升维
  • 初步结果显示,卡尼领导的加拿大自由党在联邦众议院选举中获胜
  • 牛市早报|国家发改委:将推出做好稳就业稳经济推动高质量发展若干举措
  • 柳州警方通报临牌车撞倒行人:扣留涉事车辆,行人无生命危险
  • 媒体:每一个“被偷走的人生”,都该得到公道和正义
  • 中国海警局新闻发言人就菲律宾非法登临铁线礁发表谈话
  • 从世界工厂走向全球创新中心,上海车展为何成为全球汽车行业风向标?