2

我经常使用一段特定的代码来回收基于数据提供者的列表中的对象。我想创建一个类来运行代码片段,使用给定的类来处理每个步骤。这个问题是……我不知道该取什么名字。是否存在描述这种片段重用的设计模式?

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();
        }
    }
}
4

2 回答 2

4

看起来你所拥有的可以被描述为一个“池”。如“线程池”或“连接池”。

它似乎略有偏差,因为通常您从池中请求资源,如果所有资源当前正在使用(租用),那么您会阻塞直到有一个可用。在您的示例中,您创建了一个。所以你有一个自动增长到非阻塞的池。

于 2011-01-21T22:03:09.283 回答
0

在这里,Martin Fowler 描述了一种池模式和方法,适用于所有资源都在使用并且客户端请求新资源时的情况: http ://martinfowler.com/bliki/ResourcePool.html

另请参阅有关实现的讨论: C# Object Pooling Pattern implementation

于 2012-09-21T11:26:22.297 回答