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

相关文章
相关标签/搜索