上篇文章使用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 或者 阅读此专栏 已是对笔者团队最大的支持了。