我一直在寻找Builder 模式的一个很好的例子(在 C# 中),但找不到一个,因为我不了解 Builder 模式,或者我正在尝试做一些从未想过的事情。例如,如果我有一个抽象汽车和抽象构建器方法来创建汽车零件,我应该能够将我所有的 30 个选择发送给 Director,让它构建我需要的部件,然后构建我的汽车。无论生产哪辆汽车、卡车、半挂车等,我都应该能够以完全相同的方式“驾驶”它。
第一个问题是大多数示例硬编码属性值到具体部分,我真的认为应该来自数据库。我认为这个想法是将我的选择发送给主管(从数据源),并让构建器根据我的数据创建定制产品。
第二个问题是我希望构建器方法实际创建部件然后将它们分配给产品,而不是传递字符串而是真正的强类型产品部件。
例如,我想通过让 Builder 为我制造表单字段来动态创建表单,包括标签、输入部分、验证等。这样我可以从我的 ORM 中读取对象,检查对象的元数据,将其传递给我的 Builder 并将新创建的用户控件结果添加到我的 Web 表单中。
但是,我发现的每个 Builder 示例都只有硬编码数据,而不是将选择从主代码传递给 Builder 并推出定制产品。一切似乎都是一个很大的静态案例陈述。例如,如果我有三个参数,每个参数有 10 个选项,我不想构建 30 个具体的 Builder 方法,我只想创建足以制造我的产品所需的属性,可能只有三个。
我很想让 Director 仅存在于主代码中。应该有一种方法可以自动确定调用哪个具体的构建器方法,类似于多态性和方法重载(尽管这是一个非常糟糕的例子),而不是在模式中使用 case 语句。(每次我需要添加新的产品类型时,我都需要修改现有的Director,这很糟糕)。