Builder是否适合修改给定值?

时间:2018-03-05 13:21:35

标签: design-patterns

在这个问题上和我的良心搏斗。

我有一个复杂的对象Foo。 Foo有EnrichedBar。为了简化Foo的构造,我介绍了FooBuilder。

目前,客户端有责任构建Foo以执行从Bar到EnrichedBar的映射。

在Builder中隐藏这种丰富是否合适,还是为Builder分配了太多的责任?

1 个答案:

答案 0 :(得分:2)

我认为将它隐藏在某个地方是合适的。

虽然,我不确定这是建筑师,工厂还是映射器的责任,但我确信这不是构建Foo的客户的责任。

如果我们减少它,我想我们可以说:

  • 某些内容必须能够创建FooFooBuilder/Factory?);
  • 某些内容必须能够将Bar映射到EnrichedBarBarMapper?);

那么为什么不从FooBuilder开始,该BarMapper取决于具有方法Build(Foo theFoo)的{​​{1}},该方法将使用映射器创建Foo EnrichedBar通过映射器使用传入的Bar。然后,您的客户可以依赖FooBuilder来完成工作。

虽然这可能不是最终结果,但这是一个合理的SOLID工作草案,可能会让你有点良心。