2016-06-27 13 views
-4

私のアプリケーションの参照データを作成する以下のクラスがありますが、それはビルダーパターンの優れた実装だと思いますか?私はそれを改善するために何を変えることができますか?c#Builderパターン

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、Do not Migrate Crap。 – Malachi

+0

@Malachi申し訳ありませんQQ – DLeh

答えて

4

は直接あなたの質問に答えるために - 私はそれが良い実装ちょうどかどうか、それは良いコードだかどうかについてコメントしていませんよビルダーパターン:

ビルダーパターンではありません。ビルダーパターンは、複雑なコンストラクターを持つオブジェクトに関連しています。それはクラスの構築をクラス自体から分離します。この場合

は、ここにあなたのコンストラクタです:

_referenceData = new ReferenceData() 

あなたのコードは、データを取得し、そのデータをこのオブジェクトに移入されて何をしていますか。オブジェクトのの構造のように見えるのは本当に簡単です。繰り返しますが、私はあなたの正確な質問に焦点を絞っているだけで、他のものは見ていません。それはビルダーパターンの良い実装ですか?ビルダーパターンにはまったく関係していません。