在Golang你应该知道的工厂模式(设计模式02)

Golang 工厂模式:简单、方法和抽象-选择哪一个?

联系作者@:微信公众号,Medium,LinkedIn,Twitter

golang-factory-pattern(from github.com/MariaLetta/free-gophers-pack)|300

在 Go 中,工厂模式(Factory Pattern) 是一种常用的创建型设计模式,用于动态地创建对象,同时将对象创建的细节封装起来。

工厂模式的核心概念

  1. 意图:通过为对象创建提供一个接口,将实例化的具体逻辑封装起来。
  2. 分类
    • 简单工厂模式(Simple Factory):通过一个单一函数创建对象。
    • 工厂方法模式(Factory Method):定义一个接口,让子类决定实例化哪个类。
    • 抽象工厂模式(Abstract Factory):提供一个接口,用于创建一系列相关或依赖的对象。
  3. 适用场景
    • 客户端不知道具体对象的构建过程。
    • 对象创建逻辑复杂,需要集中管理。

工厂模式的实现

1. 简单工厂模式

简单工厂模式通过一个工厂函数创建对象。

示例:创建不同类型的形状

优点

  • 简化了对象创建,客户端只需关心工厂方法。

缺点

  • 如果增加新的类型,需要修改工厂函数的代码,违反开闭原则。

2. 工厂方法模式

工厂方法模式通过为每种产品定义一个工厂接口,实现产品创建的开放封闭。

示例:通过工厂方法创建形状

优点

  • 满足开闭原则,新类型只需新增工厂类,无需修改现有代码。
  • 工厂接口使得代码更具扩展性。

缺点

  • 每种产品都需要一个对应的工厂类,可能导致类的数量增加。

3. 抽象工厂模式

抽象工厂模式用于创建一组相关或依赖的对象,常用于复杂系统。

示例:创建一组不同风格的按钮和文本框

运行结果

1
2
3
4
Rendering Mac Button
Displaying Mac TextBox
Rendering Windows Button
Displaying Windows TextBox

优点

  • 适用于需要创建一组相关对象的场景。
  • 统一管理产品族,便于扩展。

缺点

  • 结构较复杂,新增产品族时需要修改工厂接口。

总结

  • 简单工厂模式:适合小型项目,但扩展性较弱。
  • 工厂方法模式:满足开闭原则,每种产品类型有独立的工厂类。
  • 抽象工厂模式:适合创建一组相关产品的场景,支持产品族扩展。

在 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许可证

在Golang中您应该知道的单例模式(设计模式03) 在Golang中您应该知道的构建器模式(设计模式01)

评论

Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×