Yip*_*Yay 4 c# constructor design-patterns fluent-interface builder
Fluent构建器是一种众所周知的模式,用于构建具有许多属性的对象:
Team team = teamBuilder.CreateTeam("Chelsea")
.WithNickName("The blues")
.WithShirtColor(Color.Blue)
.FromTown("London")
.PlayingAt("Stamford Bridge");
Run Code Online (Sandbox Code Playgroud)
但是,由于一个特殊原因,使用它对我来说似乎不太清楚:
Team对象都有其最小的操作状态,换句话说,必须设置的属性集(必需),以便对象可以使用.现在,Fluent builder考虑到你必须保持这种状态,应该如何使用这种方法?
With_XYZ成员是否应该修改对象的一部分,这不会影响这种状态?
也许这种情况有一些一般规则?
如果该CreateTeam方法应该将强制属性作为参数,接下来会发生什么?
如果我(例如)省略WithNickName呼叫会怎样?
这是否意味着昵称应该默认为某些DefaultNickname?
这是否意味着该示例(请参阅链接)不好,因为该对象可能处于无效状态?
而且,我怀疑在这种情况下,流畅的建筑方法实际上失去了它的"美丽",不是吗?
CreateTeam() 应具有必需的属性作为参数.
Team CreateTeam(string name, Color shirtColor, string Town)
{
}
Run Code Online (Sandbox Code Playgroud)