创建型:三. 原型模式

原型模式是什么

原型模式是一种创建型设计模式, 使你能够复制已有对象, 而又无需使代码依赖它们所属的类。

为什么要用原型模式

可以帮助我们优雅地创建对象的拷贝。在这种设计模式里面,将克隆某个对象的职责交给了要被克隆的这个对象。被克隆的对象需要提供一个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
}

优点

  1. 某些时候克隆比间接new一个对象再逐属性赋值的过程更简洁高效。
  2. 你可以更方便地生成复杂对象,逃避构造函数的约束

缺点

  1. 需要为每个类实现一个可以clone的方法。
  2. 构造方法不会被执行,减少了约束。
posted @ 2022-03-20 14:59  EthanWell  阅读(68)  评论(0编辑  收藏  举报