真实世界的Go设计模式 - 原型模式

💡 原文中文,约1400字,阅读约需4分钟。
📝

内容提要

原型模式是一种创建型模式,通过复制已存在的实例来返回新的实例。被复制的实例称为原型,可以定制。在Go生态圈中,常使用库来实现复制。也可以自己实现转换方法。Go标准库有很多实现原型模式的例子,如strings.Clone、maps.Clone、http.Transport.Clone等。最简单的方式是为类型实现Clone方法或在包下实现clone函数。

🎯

关键要点

  • 原型模式是一种创建型模式,通过复制已存在的实例来返回新的实例。
  • 被复制的实例称为原型,原型是可定制的。
  • 在Go生态圈中,常使用库来实现复制,也可以自己实现转换方法。
  • Go标准库中有多个实现原型模式的例子,如strings.Clone、maps.Clone、http.Transport.Clone等。
  • 最简单的实现方式是为类型实现Clone方法或在包下实现clone函数。
  • strings.Clone返回字符串的全新副本,有助于减少内存使用。
  • maps.Clone返回一个浅克隆的map副本,使用普通赋值设置新键和值。
  • http.Transport.Clone返回导出字段的深度拷贝。
  • slog.Record.Clone返回没有共享状态的记录副本,原记录和克隆记录互不影响。
  • 还有许多其他Go标准库实现原型模式的例子,如cmd/distpack/archive.go、crypto/x509/cert_pool.go等。
  • 总的来说,实现原型模式的最简单方式是为类型实现Clone方法或在包下实现clone函数。
➡️

继续阅读