Golang 工厂模式:简单、方法和抽象-选择哪一个?
联系作者@:微信公众号,Medium,LinkedIn,Twitter
在 Go 中,工厂模式(Factory Pattern) 是一种常用的创建型设计模式,用于动态地创建对象,同时将对象创建的细节封装起来。
工厂模式的核心概念
- 意图:通过为对象创建提供一个接口,将实例化的具体逻辑封装起来。
- 分类:
- 简单工厂模式(Simple Factory):通过一个单一函数创建对象。
- 工厂方法模式(Factory Method):定义一个接口,让子类决定实例化哪个类。
- 抽象工厂模式(Abstract Factory):提供一个接口,用于创建一系列相关或依赖的对象。
- 适用场景:
- 客户端不知道具体对象的构建过程。
- 对象创建逻辑复杂,需要集中管理。
工厂模式的实现
1. 简单工厂模式
简单工厂模式通过一个工厂函数创建对象。
示例:创建不同类型的形状
优点:
- 简化了对象创建,客户端只需关心工厂方法。
缺点:
- 如果增加新的类型,需要修改工厂函数的代码,违反开闭原则。
2. 工厂方法模式
工厂方法模式通过为每种产品定义一个工厂接口,实现产品创建的开放封闭。
示例:通过工厂方法创建形状
优点:
- 满足开闭原则,新类型只需新增工厂类,无需修改现有代码。
- 工厂接口使得代码更具扩展性。
缺点:
- 每种产品都需要一个对应的工厂类,可能导致类的数量增加。
3. 抽象工厂模式
抽象工厂模式用于创建一组相关或依赖的对象,常用于复杂系统。
示例:创建一组不同风格的按钮和文本框
运行结果:
1 | Rendering Mac Button |
优点:
- 适用于需要创建一组相关对象的场景。
- 统一管理产品族,便于扩展。
缺点:
- 结构较复杂,新增产品族时需要修改工厂接口。
总结
- 简单工厂模式:适合小型项目,但扩展性较弱。
- 工厂方法模式:满足开闭原则,每种产品类型有独立的工厂类。
- 抽象工厂模式:适合创建一组相关产品的场景,支持产品族扩展。
在 Go 中,可以根据实际需求选择适合的工厂模式,并结合接口和结构体设计出灵活、高效的代码。
更多该系列文章,参考medium链接:
https://wesley-wei.medium.com/list/you-should-know-in-golang-e9491363cd9a
English post: https://programmerscareer.com/golang-factory-pattern/
作者:微信公众号,Medium,LinkedIn,Twitter
发表日期:原文在 2024-11-21 10:27 时创作于 https://programmerscareer.com/zh-cn/golang-factory-pattern/
版权声明:自由转载-非商用-非衍生-保持署名(创意共享3.0许可证)
评论