摘录自:设计模式与游戏完美开发
十年磨一剑,作者将设计模式理论巧妙地融入到实践中,以一个游戏的完整实现呈现设计模式的应用及经验的传承 《轩辕剑》之父——蔡明宏、资深游戏制作人——李佳泽、Product Evangelist at Unity Technologies——Kelvin Lo、信仁软件设计创办人—— 赖信仁、资深3D游戏美术——刘明恺 联合推荐全书采用了整合式的项目教学,即以一个游戏的范例来应用23种设计模式的实现贯穿全书,让读者学习到整个游戏开发的全过程和作者想要传承的经验,并以浅显易懂的比喻来解析难以理解的设计模式,让想深入了解此领域的读者更加容易上手。
工程GitHub
PROTOTYPE—跟MM用QQ聊天,一定要说些深情的话语了,我搜集了好多肉麻的情话,需要时只要copy出来放到QQ里面就行了,这就是我的情话prototype了。(100块钱一份,你要不要)
原始模型模式:通过给出一个原型对象来指明所要创建的对象的类型,然后用复制这个原型对象的方法创建出更多同类型的对象。原始模型模式允许动态的增加或减少产品类,产品类不需要非得有任何事先确定的等级结构,原始模型模式适用于任何的等级结构。缺点是每一个类都必须配备一个克隆方法。
using UnityEngine;
using System.Collections;
namespace DesignPattern_Prototype
{
public interface Prototype
{
object Clone();
}
public class ConcretePrototype : Prototype
{
public string Name { get; set; }
public ConcretePrototype(){}
public object Clone()
{
ConcretePrototype pNewObj = new ConcretePrototype();
pNewObj.Name = this.Name;
return pNewObj;
}
}
}
using UnityEngine;
using System.Collections;
using DesignPattern_Prototype;
public class PrototypeTest : MonoBehaviour
{
void Start()
{
UnitTest();
}
void UnitTest()
{
// 原始物件
ConcretePrototype Obj = new ConcretePrototype();
Obj.Name = "ConcreteObj1";
// 复制物件
ConcretePrototype CloneObj = Obj.Clone() as ConcretePrototype;
// 显示
Debug.Log("原始物件:" + Obj.Name);
Debug.Log("复制物件:" + CloneObj.Name);
}
}