2016-06-27 2 views
-4

У меня есть класс, который строит ссылочные данные для моего приложения, как вы думаете, это хорошая реализация шаблона построителя. Что я могу изменить, чтобы улучшить его?C# Builder Pattern

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

Благодаря

+11

проверить http://codereview.stackexchange.com – DLeh

+3

@DLeh, не мигрируйте Crap. – Malachi

+0

@ Malachi извините QQ – DLeh

ответ

4

Чтобы ответить на ваш вопрос прямо - я не комментирую, является ли он или нет хорошего код, просто ли или нет это хорошая реализация строительный шаблон:

Это не шаблон строителя. Шаблон компоновщика относится к объектам с сложными конструкторами. Он отделяет построение класса от самого класса.

В этом случае, вот ваш конструктор:

_referenceData = new ReferenceData() 

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

Смежные вопросы