游戏设计模式读书笔记:原型模式

Posted by 蔡华的博客 on March 16, 2017

原型模式

定义

  • 定义:原型模式是创建型模式的一种,其特点在于通过“复制”一个已经存在的实例来返回新的实例,而不是新建实例。被复制的实例就是我们所称的“原型”,这个原型是可定制的。 原型模式多用于创建复杂的或者耗时的实例,因为这种情况下,复制一个已经存在的实例使程序运行更高效;或者创建值相等,只是命名不一样的同类数据。
  • 看图 image

模式的理解

  • 当需要快速并且尽可能少的占用内存的情况下,创建一个新的对象可以采用这个模式。前提是浅拷贝,因为深拷贝就是创建一个新的对象。
  • 如果在必须是深拷贝,那么这个模式只是在使用上有便利,或者说代码上更优雅而已。
  • 在扩展一个基础类型时,可以使用原型模式。但是C#中如果是结构体还好说,如果是个类完全可以用继承。
  • 根据定义这个不是新建一个实例,那么本质上是浅拷贝。至于到底是深拷贝还是浅拷贝我认为可以根据自己的需要去做。

Unity中的实现

  • 其实在C#中已经实现了ICloneable接口,直接继承接口,然后实现方法即可。而且.net还提供了MemberwiseClone方法,直接实现了浅拷贝。
  • 要做深拷贝就是new一个对象返回即可。

吐槽

  • 这个文章不知所谓。作者自己都不喜欢这个模式。或者说他用这个模式的方向应该不是这个模式原本希望人们使用的方式吧。