前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >设计模式:原型模式

设计模式:原型模式

作者头像
运维开发王义杰
发布2023-08-10 14:31:03
1160
发布2023-08-10 14:31:03
举报
文章被收录于专栏:运维开发王义杰

原型模式是一种创建型设计模式,它允许通过复制现有对象来创建新对象,而不是通过实例化类来创建。在Go中,原型模式可以通过使用interface和struct来实现。下面是一个Go实现的原型模式示例,其中我们定义了一个接口和一个结构体,该结构体实现了该接口并具有Clone方法,该方法返回一个新的结构体副本。

代码语言:javascript
复制
package main


import "fmt"


type Prototype interface {
    Clone() Prototype
}


type ConcretePrototype struct {
    name string
}


func (p *ConcretePrototype) Clone() Prototype {
    return &ConcretePrototype{name: p.name}
}


func main() {
    prototype := &ConcretePrototype{name: "prototype"}
    clone := prototype.Clone()
    fmt.Println(clone)
}

这个示例中,我们定义了一个Prototype接口和一个ConcretePrototype结构体。ConcretePrototype结构体实现了Prototype接口并具有Clone方法,该方法返回一个新的ConcretePrototype结构体副本。

在main函数中,我们创建了一个ConcretePrototype结构体实例,并使用Clone方法创建了一个新的ConcretePrototype结构体副本。

原型模式在什么场景使用

原型模式的使用场景包括:1. 类初始化需要消化非常多的资源,这个资源包括数据、硬件资源等,通过原型拷贝避免这些消耗。

2. 通过new一个对象需要非常繁琐的数据准备或访问权限,可以使用原型模式。

3. 一个对象需要提供给其他对象访问,而且各个调用者可能都需要修改其值时可以考虑使用原型模式拷贝多个对象供调用者使用,即保护性拷贝。

优缺点:

原型模式的优点包括:

1. 性能高,使用原型模式复用的方式创建实例对象,比使用构造函数重新创建对象性能要高(针对类实例对象开销大的情况)。

2. 流程简单,原型模式可以简化创建的过程,可以直接修改现有的对象实例的值,达到复用的目的(针对构造函数繁琐的情况)。

原型模式的缺点包括:

1. 实现复杂,必须重写对象的 clone 方法,Java 中提供了 cloneable 标识该对象可以被拷贝,但是必须覆盖 Object 的 clone 方法才能被拷贝。

2. 坑多,覆盖 clone 方法必须重写对象的 clone 方法。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2023-06-04,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 运维开发王义杰 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档