设计模式---原型模式(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);
    }
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容