Есть ли название для этого шаблона дизайна? - PullRequest
2 голосов
/ 22 января 2011

Существует специальный фрагмент кода, который я часто использую для переработки объектов в списке на основе поставщика данных. Я подумал о создании класса для запуска через фрагмент, используя данный класс для обработки каждого шага. Эта проблема ... Я не знаю, как ее назвать. Существует ли шаблон проектирования, который описывает это повторное использование фрагментов?

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

Ответы [ 2 ]

4 голосов
/ 22 января 2011

Кажется, что то, что у вас есть, может быть описано как «пул».Как в « пуле потоков » или « пуле соединений

Кажется, что он немного отличается в том смысле, что вы обычно запрашиваете ресурс из пула, и если все ресурсы в настоящее время используются (сданы в аренду), то вы блок , пока один не станет доступным.В вашем примере вы создаете один.Таким образом, у вас есть пул, который автоматически увеличивается в размерах и становится неблокирующим.

0 голосов
/ 21 сентября 2012

Здесь Мартин Фаулер описывает шаблон пулинга и методы для ситуации, когда все ресурсы используются, и клиент запрашивает новый: http://martinfowler.com/bliki/ResourcePool.html

Также см. Это обсуждение реализации: C # Object PoolingРеализация шаблона

...