我目前正在学习构建器模式。所有的教程,一切都很棒,但是当涉及到处理真实数据(不是 SetFoo((、SetBar(((在构建器中(中的硬编码字符串(时,我意识到我需要从控制器内部传递给构建器(MVC(。然后我的控制器恰好是导演吧?
我的构造函数方法现在消失了,因为数据已经由构建器的 setter 设置。
例:
fooBuilder.setBar("real data from db");
fooBuilder.setFoo("more real data from the database");
它是否违反了构建器模式的原则?
我认为控制器将数据传递给构建器是可以的。
但是您仍然可以保留构造函数方法。使用生成器模式不需要删除构造函数。本质是 Builder 类知道如何创建和构建零件。
我建议重命名 set 方法以构建:BuildBar、BuildFoo。