在这个问题上和我的良心搏斗。
我有一个复杂的对象Foo。 Foo有EnrichedBar。为了简化Foo的构造,我介绍了FooBuilder。
目前,客户端有责任构建Foo以执行从Bar到EnrichedBar的映射。
在Builder中隐藏这种丰富是否合适,还是为Builder分配了太多的责任?
答案 0 :(得分:2)
我认为将它隐藏在某个地方是合适的。
虽然,我不确定这是建筑师,工厂还是映射器的责任,但我确信这不是构建Foo的客户的责任。
如果我们减少它,我想我们可以说:
Foo
(FooBuilder/Factory
?); Bar
映射到EnrichedBar
(BarMapper
?); 那么为什么不从FooBuilder
开始,该BarMapper
取决于具有方法Build(Foo theFoo)
的{{1}},该方法将使用映射器创建Foo
EnrichedBar
通过映射器使用传入的Bar
。然后,您的客户可以依赖FooBuilder
来完成工作。
虽然这可能不是最终结果,但这是一个合理的SOLID工作草案,可能会让你有点良心。