C#使用生成器构建对象
是一种众所周知的模式,用于构建具有许多属性的对象:C#使用生成器构建对象,c#,design-patterns,constructor,builder,fluent-interface,C#,Design Patterns,Constructor,Builder,Fluent Interface,是一种众所周知的模式,用于构建具有许多属性的对象: Team team = teamBuilder.CreateTeam("Chelsea") .WithNickName("The blues") .WithShirtColor(Color.Blue) .FromTown("London") .PlayingAt("Stamford Bridge"); 然而,由于一个特殊的原因,使用
Team team = teamBuilder.CreateTeam("Chelsea")
.WithNickName("The blues")
.WithShirtColor(Color.Blue)
.FromTown("London")
.PlayingAt("Stamford Bridge");
然而,由于一个特殊的原因,使用它对我来说似乎不是很清楚:
- 每个
对象都有其最小操作状态,换句话说,必须设置一组属性(强制),以便对象可以使用团队
Fluent builder
方法
With_XYZ
成员是否应该修改对象中不会影响此状态的部分
这种情况可能有一些一般规则?
更新: 如果
CreateTeam
方法应该将强制属性作为参数,接下来会发生什么
- 如果我(例如)省略带有昵称的
调用,会发生什么
- 这是否意味着昵称应该默认为某个
default昵称
- 这是否意味着示例(参见链接)不好,因为对象可能处于无效状态
- 而且,我怀疑在这种情况下,流畅的建筑方法实际上失去了它的“美”,不是吗
CreateTeam()
应具有强制属性作为参数
Team CreateTeam(string name, Color shirtColor, string Town)
{
}
在我看来,流畅界面的要点是:
- 将构造函数中的参数数量最小化为零,同时在创建某些属性时仍动态初始化
- 使属性/参数值关联非常清晰-在大型参数列表中,什么值代表什么?不进一步挖掘就说不出来
- 实例化的编码风格非常干净、可读且可编辑。使用此格式样式添加或删除特性设置不太容易出错。即删除整个行,而不是在长参数列表的中间进行编辑;更不用说编辑错误的参数了