c# Builder Pattern

本文关键字:Pattern Builder | 更新日期: 2023-09-27 17:51:18

我有下面的类,为我的应用程序构建参考数据,你认为这是一个很好的实现构建器模式。我能做些什么来改善它?

public class ReferenceDataBuilder
    {
        private readonly List<Task> _builderTasks;
        private IDataProvider _dataAccess;
        private ReferenceData _referenceData;
        private bool _withPersistence;
        private string _persistenceDirectory;
        public ReferenceDataBuilder(IDataProvider dataAccess)
        {
            ValidationUtils.ArgumentNotNull(dataAccess, "dataAccess");
            _dataAccess = dataAccess;
            _referenceData = new ReferenceData();
            _builderTasks = new List<Task>();
            createBuilderTasks();
        }
        public virtual ReferenceData BuildAsync()
        {
            Parallel.ForEach(_builderTasks, (task) => { task.Start(); task.Wait(); });
            return _referenceData;
        }

        private void createBuilderTasks()
        {
            _builderTasks.Add(new Task(() => _referenceData.Object1 = _dataAccess.GetObject1()));
            _builderTasks.Add(new Task(() => _referenceData.Object2 = _dataAccess.GetObject2()));
            _builderTasks.Add(new Task(() => _referenceData.Object3 = _dataAccess.GetObject3());
            _builderTasks.Add(new Task(() => _referenceData.Object4 = _dataAccess.GetObject4());
        }
    }

用法:

new ReferenceDataBuilder(dataAccess).BuildAsync();

谢谢

c# Builder Pattern

直接回答你的问题-我不是在评论它是否是好的代码,只是它是否是构建器模式的良好实现:

这根本不是构建器模式。构建器模式与具有复杂构造函数的对象相关。它将类的构造与类本身分离。

在本例中,构造函数如下:

_referenceData = new ReferenceData()

你的代码正在做的是检索数据并用该数据填充这个对象。看起来对象的构造非常简单。再说一遍,我只关注你的问题,不看其他任何东西。它是构建器模式的良好实现吗?