我经常使用一段特定的代码片段来回收基于数据提供者的列表中的对象。我想创建一个类来运行代码片段,使用给定的类来处理每个步骤。这个问题是......我不知道该怎么命名。是否存在描述此片段重用的设计模式?
package
{
public class RecycleOperationRunner implements IRecycleOperationRunner
{
public function RecycleOperationRunner()
{
}
public function run(operation:IRecycleOperation):void
{
const m:int = Math.max(numObjects, numDataItems);
for (var i:int = 0; i < m; i++)
{
if (i < numDataItems)
{
if (i < numObjects)
{
operation.reuseItem(i);
}
else
{
operation.createItem(i);
}
operation.setupItem(i);
}
else
{
operation.removeItem(i);
}
}
operation.dispose();
}
}
}
答案 0 :(得分:4)
看起来你所拥有的可以被描述为“游泳池”。与“thread pool”或“connection pool。”
一样似乎略有偏差,因为通常您从池中请求资源,如果当前正在使用(租用)所有资源,那么您阻止直到一个可用。在您的示例中,您创建一个。所以你有一个自动增长的池,可以非阻塞。
答案 1 :(得分:0)
Martin Fowler描述了一种池化模式和方法,当所有资源都在使用并且客户端请求新资源时: http://martinfowler.com/bliki/ResourcePool.html
另见有关实施的讨论: C# Object Pooling Pattern implementation