上篇文章使用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
關於接口的顯示實現是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 或者 閱讀此專欄 已是對筆者團隊最大的支持了。