gpt4 book ai didi

使用生成器的 C# 构造对象

转载 作者:太空狗 更新时间:2023-10-30 00:20:48 24 4
gpt4 key购买 nike

Fluent builder是构建具有许多属性的对象的众所周知的模式:

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)
{
}

关于使用生成器的 C# 构造对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8980609/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com