首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ObjectPool代码

ObjectPool代码
EN

Code Review用户
提问于 2017-03-16 11:16:58
回答 1查看 78关注 0票数 2

下面是一个简单的ObjectPool集合,用于我的一些类。有人能回顾一下吗?

代码语言:javascript
复制
using System;
using System.Collections.Concurrent;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace Mango.Collections
{
    sealed class ObjectPool<T>
    {
        private readonly ConcurrentBag<T> _objects;
        private readonly Func<T> _objectGenerator;

        public ObjectPool(Func<T> objectGenerator)
        {
            if (objectGenerator == null) { throw new ArgumentNullException("objectGenerator"); }
            _objects = new ConcurrentBag<T>();
            _objectGenerator = objectGenerator;
        }

        public T GetObject()
        {
            T Item;
            if (_objects.TryTake(out Item)) { return Item; }
            return _objectGenerator();
        }

        public void PutObject(T Item)
        {
            _objects.Add(Item);
        }
    }
}
EN

回答 1

Code Review用户

发布于 2017-03-16 13:48:03

代码在我看来是干净的,但为什么要密封呢?我认为它作为其他事情的基类是有用的。它可以用抽象类来描述,也可以用GetObject<T>PutObject<T>方法的接口来描述。

票数 0
EN
页面原文内容由Code Review提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://codereview.stackexchange.com/questions/157916

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档