真实世界的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函数。
➡️