繁体   English   中英

带构建器的C#构造对象

[英]C# construction objects with builder

Fluent构建器是一种众所周知的模式,用于构建具有许多属性的对象:

Team team = teamBuilder.CreateTeam("Chelsea")
    .WithNickName("The blues")
    .WithShirtColor(Color.Blue)
    .FromTown("London")
    .PlayingAt("Stamford Bridge");

但是,由于一个特殊原因,使用它对我来说似乎不太清楚:

  • 每个Team对象都有其最小的操作状态 ,换句话说,必须设置的属性集(必需),以便对象可以使用。

现在,考虑到你必须保持这种状态,应如何使用Fluent builder方法?

如果With_XYZ成员修改了对象的一部分,那么这不会影响这种状态吗?

也许这种情况有一些一般规则?


更新:

如果CreateTeam方法应该将强制属性作为参数,接下来会发生什么?

  • 如果我(例如)省略WithNickName调用会发生什么?

  • 这是否意味着昵称应该默认为某个DefaultNickname

  • 这是否意味着该示例(请参阅链接)不好,因为该对象可能处于无效状态?

  • 而且,我怀疑在这种情况下,流畅的建筑方法实际上失去了它的“美丽”,不是吗?

CreateTeam()应该具有必需的属性作为参数。

Team CreateTeam(string name, Color shirtColor, string Town)
{
}

在我看来,Fluent Interface的要点是:

  • 在构造函数中将参数数量最小化为零,同时在创建时仍动态初始化某些属性。
  • 使属性/参数值关联非常清晰 - 在大型参数列表中,什么值是什么? 没有进一步挖掘就说不出来。
  • 实例化的编码风格非常干净,可读和可编辑 使用此格式设置样式添加或删除属性设置不易出错。 IE删除整行,而不是在长参数列表的中间编辑; 更不用说编辑错误的参数了

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM