我創建了一個流暢的建設者風格圖案與數據加載我的測試幫助。某些方法的順序很重要,並且想知道管理正確順序的首選方法是什麼。在建造者模式中管理訂單的首選方式是什麼?
我此刻的以下內容:
using NUnit.Framework;
[TestFixture]
public class DataBuilderTests
{
[Test]
public void Can_NAME()
{
new DataLoader()
.Start() // must be called first
.Setup() // then called next
.LoadEmployees() // optional order not NB
.LoadProducts() // optional order not NB
.StartCleanup() // begin cleanup
.CleanupEmployees() // optional order not NB
.CleanupProducts() // optional order not NB
.End();
}
}
public class DataLoader
{
public DataBuilderSetup Start()
{
return new DataBuilderSetup(this);
}
}
public class DataBuilderSetup
{
private readonly DataLoader _dataLoader;
public DataBuilderSetup(DataLoader dataLoader)
{
_dataLoader = dataLoader;
}
public DataBuilderOptions Setup()
{
// do setup
return new DataBuilderOptions(_dataLoader);
}
}
public class DataBuilderOptions
{
private readonly DataLoader _dataLoader;
public DataBuilderOptions(DataLoader dataLoader)
{
_dataLoader = dataLoader;
}
public DataBuilderOptions LoadEmployees()
{
// load
return this;
}
public DataBuilderOptions LoadProducts()
{
// load
return this;
}
public DataBuilderCleanupOptions StartCleanup()
{
return new DataBuilderCleanupOptions(_dataLoader);
}
}
public class DataBuilderCleanupOptions
{
private readonly DataLoader _dataLoader;
public DataBuilderCleanupOptions(DataLoader dataLoader)
{
_dataLoader = dataLoader;
}
public DataBuilderCleanupOptions CleanupEmployees()
{
// cleanup
return this;
}
public DataBuilderCleanupOptions CleanupProducts()
{
// cleanup
return this;
}
public DataLoader End()
{
return _dataLoader;
}
}
你目前的解決方案有什麼問題? –
沒什麼,只是我今天早上想出來的,對其他人如何處理場景感到好奇 – Chev
如果調用LoadEmployees,就必須調用「CleanupEmployees」嗎? –