Следует учитывать, являются ли шаги PrepareParts().PrepareDealer()
обязательными или нет, и могут ли они быть пропущены или нет.И, в этом отношении, важен ли порядок операций.
Если все шаги являются обязательными, и если вы должны сделать это по порядку, то сборщик не является отличным способом.
Следующее, что вы должны рассмотреть, это то, хотите ли вы сменить поставщика данных для ваших шагов.Тогда вам понадобится какая-то инъекция зависимостей в ваш конструктор.Возможно, вы захотите получить источник из базы данных, диска или веб-службы, например.
Наконец, вы должны рассмотреть, что должен делать этот код:
var rb1 = ResultBuilder.PrepareParts()
var rb2 = rb1.PrepareDealer();
var rb1Built = rb1.Build();
var rb2Built = rb2.Build();
Часто вы видите много return this;
в свободном дизайне.Это приводит к неожиданному поведению.Если вы создаете конвейер действий, которые выполняются при вызове Build()
, и вы всегда делаете return new ResultBuilder(...);
, тогда вы можете создать твердый плавный дизайн.