美文网首页
原型模式

原型模式

作者: 小幸运Q | 来源:发表于2021-02-19 15:12 被阅读0次

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

    相关文章

      网友评论

          本文标题:原型模式

          本文链接:https://www.haomeiwen.com/subject/ywwvxltx.html