天天看點

設計模式---原型模式(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);
    }
}
           

繼續閱讀