你可以看到两个选项:要么使它成为池的内部类,要么使allocate方法包为private,并将它放在与池相同的包中.
编辑:啊.只需将构造函数设为私有,然后覆盖池用于创建新实例的任何方法.作为使用上面框架的(粗略)示例:
public abstract class Pool
{
public abstract T getNewObject();
public T obtain(){ return getNewObject(); }
public void free(T obj) {}
}
和
public class GameObject
{
// Pooling: Provides a static method for allocation and a method for freeing
private static Pool pool = new Pool(){
public GameObject getNewObject(){ return new GameObject(); }
};
public static GameObject allocate() { return pool.obtain(); }
private GameObject(){}
public void free() { pool.free(this); }
}
游戏对象的构造函数很高兴其他任何人都无法访问.
本文介绍了如何使用内部类和私有构造函数实现对象池的设计,通过提供静态方法进行对象的分配和释放,确保对象只能在池中被创建和管理。这种方法可以有效地减少内存分配和垃圾收集的开销,提高游戏对象等资源的复用率。

被折叠的 条评论
为什么被折叠?



