golang中的原型模式

来自一个大佬的博客,建议食用

设计模式不分语言,是一种思维层面的体现,但是不能在不同语言中使用同一套实现(每种语言有不同的特性),比如go,本身是没有继承一说,但是通过结构体的组合来实现语义上的继承。而多态也是通过接口的方式来实现的。

下方的图来自于大佬博客,贴在这里方便查看!!!

设计原则

设计模式

创建型模式

原型模式

每次返回的都是新的对象。
以深浅拷贝为例:

type Person struct {
	name string
	age  int
}

//深拷贝
func (p *Person) DeepClone() *Person {
	marshal, _ := json.Marshal(p)
	var newPerson Person
	json.Unmarshal(marshal, &newPerson)
	return &newPerson
}

//浅拷贝:只是传了一个地址,实质是同一个实例
func (p *Person) ShallowCopy() *Person {
	return p
}

你可能感兴趣的:(设计模式,原型模式,golang)