设计模式(二)| 青训营笔记

102 阅读2分钟

之前一个非常友善的面试官推荐我好好学习一下设计模式,可以提升眼界、改变思考问题的方式,所以找了《设计模式-可复用面向对象软件的基础》一书,虽然其中的代码示例都是C++,但读下来还是有很多收获,这里用go语言写一下我学习到的东西

上次讲了创造型设计模式中的单例设计模式、工厂方法模式和抽象方法模式,今天把创造型设计模式中的另外一个给补上,也就是原型设计模式,最后一个下次讲

1. 原型设计模式

原型设计模式是一种创建型设计模式。它的主要思想是创建一个可定制的对象,并且可以通过复制现有的对象来创建新的对象。通过这种方式,可以避免重复地创建相似的对象,从而提高效率。

应用场景

适用于以下场景:

  • 对象的创建过程比较复杂,希望通过复制原型对象来创建新的对象。
  • 对象的类型不需要在运行时明确,因为可以通过复制原型对象得到所需类型的对象。

示例实现

下面是一个简单的示例代码,我们将使用原型设计模式来复制Monkey类型的对象,从而创建新的对象。具体实现如下:

type Monkey struct {
Name string
Age  int
}

func (m \*Monkey) Clone() \*Monkey {
return \&Monkey{
Name: m.Name,
Age:  m.Age,
}
}

// 示例代码
func main() {
// 创建原型对象
monkey := \&Monkey{
Name: "Tom",
Age:  3,
}
// 复制原型对象
newMonkey := monkey.Clone()
fmt.Printf("newMonkey: %+v\n", newMonkey)
}

在上面的代码中,我们创建了一个Monkey类型的原型对象。然后,通过调用Clone方法来复制Monkey类型的对象,并且创建一个新的对象。最后,将创建的新对象输出到控制台。