创建型:三. 原型模式
原型模式是什么
原型模式是一种创建型设计模式, 使你能够复制已有对象, 而又无需使代码依赖它们所属的类。
为什么要用原型模式
可以帮助我们优雅地创建对象的拷贝。在这种设计模式里面,将克隆某个对象的职责交给了要被克隆的这个对象。被克隆的对象需要提供一个clone()方法。通过这个方法可以返回该对象的拷贝。
原型模式怎么实现
拷贝这些原型创建的对象。通过实现克隆clone()操作,快速的生成和原型对象一样的实例。
原型示例
type Cloneable interface {
Clone() Cloneable
}
type Student struct {
Name string
Behavior []string
Describe *string
}
func NewStudent (name,describe string,behavior []string) *Student {
return &Student{
Name: name,
Behavior: behavior,
Describe: &describe,
}
}
func (s *Student)GetName () string {
return s.Name
}
func (s *Student) Clone() Cloneable {
student := *s
return &student
}
优点
- 某些时候克隆比间接new一个对象再逐属性赋值的过程更简洁高效。
- 你可以更方便地生成复杂对象,逃避构造函数的约束
缺点
- 需要为每个类实现一个可以clone的方法。
- 构造方法不会被执行,减少了约束。