型模式


本文摘自网络,作者,侵删。


原型模式(Prototype Pattern)是用于创建重复的对象,同时又能保证性能。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。

这种模式是实现了一个原型接口,该接口用于创建当前对象的克隆。当直接创建对象的代价比较大时,则采用这种模式。例如,一个对象需要在一个高代价的数据库操作之后被创建。我们可以缓存该对象,在下一个请求时返回它的克隆,在需要的时候更新数据库,以此来减少数据库调用。

// 示例结构体
type Example struct {
    Content string
}
  • 深拷贝:

需要深拷贝的变量必须首字母大写才可以被拷贝

// 简单值
func (e *Example) Clone() *Example {
    res := *e
    return &res
}

// 结构体(基于序列化和反序列化来实现对象的深度拷贝:)
func deepCopy(dst, src interface{}) error {
    var buf bytes.Buffer
    if err := gob.NewEncoder(&buf).Encode(src); err != nil {
        return err
    }
    return gob.NewDecoder(bytes.NewBuffer(buf.Bytes())).Decode(dst)
}

标准库gob是golang提供的“私有”的编解码方式,它的效率会比json,xml等更高,特别适合在Go语言程序间传递数据。

  • 浅拷贝
//(对于map和slice无效,依旧共享相同内存对象,其他会拷贝一份)
//(可以单独处理map和slice)
Pc2:=Pc1

本文来自:简书

感谢作者:小幸运Q

查看原文:型模式

相关阅读 >>

Golang怎样读取json数据

聊聊dubbo-Go-proxy的plugins

使用cron创建定时任务【Golang 入门系列八】

slice

一周 Go world 新鲜事

使用Go defer时要注意这两处!

阿里云Go开发环境搭建过程

Golang中什么是接口

Golang中如何正确地使用database/sql包访问数据库

Go语言中slice作为参数传递时遇到的一些“坑”

更多相关阅读请进入《Go》频道 >>




打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

分享从这里开始,精彩与您同在

评论

管理员已关闭评论功能...