Unity 遊戲框架搭建 (二十一) 使用對象池時的一些細節

上篇文章使用SafeObjectPool實現了一個簡單的Msg類。代碼以下:html

class Msg : IPoolAble,IPoolType
        {
            #region IPoolAble 實現

            public void OnRecycled()
            {
                Log.I("OnRecycled");
            }
            
            public bool IsRecycled { get; set; }

            #endregion
        
            
            #region IPoolType 實現

            public static Msg Allocate()
            {
                return SafeObjectPool<Msg>.Instance.Allocate();
            }
            
            public void Recycle2Cache()
            {
                SafeObjectPool<Msg>.Instance.Recycle(this);
            }
            
            #endregion
        }

這個類雖然只是用來作SafeObjectExample的實例類的,可是仍是有改進的空間。git

在Msg的使用場景中,咱們只用到了Msg類的Allocate和Recycle2Cache方法。而OnRecycled和IsRecycle這兩個API用戶都用不到,或者說用戶用了會對Msg的管理形成風險,因此咱們要想辦法使用戶不能訪問到這兩個API。github

這個是能夠作到的,就是把OnRecycled和IsRecycled使用接口的顯示實現。微信

代碼以下:框架

class Msg : IPoolAble,IPoolType
        {
            #region IPoolAble 實現

            void IPoolAble.OnRecycled()
            {
                Log.I("OnRecycled");
            }
            
            bool IPoolAble.IsRecycled { get; set; }

            #endregion
        
            
            #region IPoolType 實現

            public static Msg Allocate()
            {
                return SafeObjectPool<Msg>.Instance.Allocate();
            }
            
            public void Recycle2Cache()
            {
                SafeObjectPool<Msg>.Instance.Recycle(this);
            }
            
            #endregion
        }

這樣,建立出來的 Msg對象不能直接訪問OnRecycled和IsRecycled這兩個API了,若是硬是要訪問也能夠,就要將Msg對象轉成IPoolAble接口就能夠訪問了了。ui

  • 最近在看《Framework Design Guidlines》,裏邊說IPoolAble這樣的命名有問題,應該是IPoolable,嗯…,要去重構了...

關於接口的顯示實現是C#的語法細節,隨便貼上一篇給你們參考:
C# 接口的隱式與顯示實現 - Ben—Zhang - 博客園:http://www.cnblogs.com/ben-zhang/archive/2012/12/18/2823455.htmlthis

OK,今天就到這裏3d

相關連接:

個人框架地址:https://github.com/liangxiegame/QFrameworkcode

教程源碼:https://github.com/liangxiegame/QFramework/tree/master/Assets/HowToWriteUnityGameFramework/視頻

QFramework&遊戲框架搭建QQ交流羣: 623597263

轉載請註明地址:涼鞋的筆記http://liangxiegame.com/

微信公衆號:liangxiegame

若是有幫助到您:

若是以爲本篇教程或者 QFramework 對您有幫助,不妨經過如下方式贊助筆者一下,鼓勵筆者繼續寫出更多高質量的教程,也讓更多的力量加入 QFramework 。

筆者在這裏保證 QFramework、入門教程、文檔和此框架搭建系列的專欄永遠免費開源。以上捐助產品的內容對於使用 QFramework 的使用來說都不是必須的,因此你們不用擔憂,各位使用 QFramework 或者 閱讀此專欄 已是對筆者團隊最大的支持了。

相關文章
相關標籤/搜索