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