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