型模式


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


原型模式(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

查看原文:型模式

相关阅读 >>

.Go是什么文件

Golang make和new区别

简介

再见Go-micro!企业项目迁移Go-zero全攻略(一)

Golang看什么书

win7 Go语言如何安装

Golang 如何结束一个协程

Go语言中的不定参数类型是什么意思

Golang主要开发什么?

Golang基础-内置数据结构

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




打赏

取消

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

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

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

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

评论

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

    暂无评论...