设计模式---原型模式(DesignPattern_Prototype)

摘录自:设计模式与游戏完美开发

十年磨一剑,作者将设计模式理论巧妙地融入到实践中,以一个游戏的完整实现呈现设计模式的应用及经验的传承 《轩辕剑》之父——蔡明宏、资深游戏制作人——李佳泽、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);
    }
}

你可能感兴趣的:(设计模式---原型模式(DesignPattern_Prototype))