下载安卓APP箭头
箭头给我发消息

客服QQ:3315713922

实现初始化和重置的池

作者:匿名     来源: 互联网点击数:916发布时间: 2021-10-18 11:30:38

标签: unity3d初始化对象池重置

  基本的实现初始化和重置的池,构造函数创建了一个新的空的对象,它从构造函数的原型继承了属性,构造函数的作用就是去初始化这个对象,可能你已经知道了,在这种类型的调用中,上下文指向新创建的实例。

  这个实现很简单明了,用参数T表示,这表示T有两个限制,第一,T必须是一个类,第二,它必须有一个无参的构造函数。

  结构函数将池塘可能的最大值作为第一参数,另外两个是可选的封闭包,如果输入值,第一个封闭包将用于重置池塘,第二个初始化的新对象。由于池使用延迟策略,除构造函数外,其主要工作在New()。在这些操作中,新的和回收的对象要么是实例化的,要么是重置的,这两个操作都是通过关闭包来实现的。以下是池的使用方法:  

 

  管理型自重置池:

  上面的对象池实现了基本的功能,但是仍然存在缺陷,它在对象定义中将初始化和复位对象分离开来,在某种程度上违反封装原则,导致了紧耦合,这是需要尽可能避免的。在上述中,我们是没有真正的替代方案的,因为我们不能修改List的定义。然而,当你用自定义类时,你可以实现接口作为代替,对应也可以不需要指明两个闭包了。  

 

  集体重置池:

  有些类型不需要保存在一系列框架中,在框架结束前无效。在这种情况下,我们可以在适当的时机将所有池塘化的对象再次存储在池塘中。现在,重写这个池塘更简单、更有效。

  与原始相比,变化相当大。无论类别的签名如何,都可以看出它已经被取代了,只有当所有分配的对象都需要放入池中时才需要调用。在类内部,被List代替,其中保存了所有已分配的对象,包括正在使用的对象的引用。还可以跟踪最近创建或释放的对象在该list中索引,从而确定是新建对象还是重新设置现有对象。

    >>>>>>点击进入游戏开发专题

赞(7)
踩(0)
分享到:
华为认证网络工程师 HCIE直播课视频教程