Design patterns 生成器修改给定值是否合适?

Design patterns 生成器修改给定值是否合适?,design-patterns,Design Patterns,在这件事上与我的良心搏斗 我有一个复杂的对象Foo。富有恩里切德巴。为了简化Foo的构造,我将介绍FooBuilder 目前,构建Foo的客户机有责任执行从Bar到EnrichedBar的映射 在构建器中隐藏此扩展是合适的,还是将太多的责任分配给了构建器?我认为将其隐藏在某个地方是合适的 虽然,我不确定这是建筑商、工厂还是制图员的责任,但我相当肯定这不是构建Foo的客户的责任 如果我们降低它,我想我们可以说: 某些东西必须能够创建Foo(FooBuilder/Factory?) 某些东西必须能

在这件事上与我的良心搏斗

我有一个复杂的对象Foo。富有恩里切德巴。为了简化Foo的构造,我将介绍FooBuilder

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


在构建器中隐藏此扩展是合适的,还是将太多的责任分配给了构建器?

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

虽然,我不确定这是建筑商、工厂还是制图员的责任,但我相当肯定这不是构建Foo的客户的责任

如果我们降低它,我想我们可以说:

  • 某些东西必须能够创建
    Foo
    FooBuilder/Factory
    ?)
  • 某些东西必须能够将
    条形图
    映射到
    EnrichedBar
    条形图映射器
    ?)
因此,为什么不从一个
FooBuilder
开始,它依赖于一个
BarMapper
,它有一个
Build(Foo theFoo)
方法,该方法将使用映射器通过映射器使用传入的
Bar
创建
Foo
。然后,您的客户可以依靠
FooBuilder
来完成这项工作


虽然这可能不是最终结果,但这是一份合理可靠的工作草案,可能会有助于安抚你的良心。

我认为把它藏在某个地方是合适的

虽然,我不确定这是建筑商、工厂还是制图员的责任,但我相当肯定这不是构建Foo的客户的责任

如果我们降低它,我想我们可以说:

  • 某些东西必须能够创建
    Foo
    FooBuilder/Factory
    ?)
  • 某些东西必须能够将
    条形图
    映射到
    EnrichedBar
    条形图映射器
    ?)
因此,为什么不从一个
FooBuilder
开始,它依赖于一个
BarMapper
,它有一个
Build(Foo theFoo)
方法,该方法将使用映射器通过映射器使用传入的
Bar
创建
Foo
。然后,您的客户可以依靠
FooBuilder
来完成这项工作


虽然这可能不是最终的结果,但它是一份合理可靠的工作草案,可能会有助于安抚你的良心。

这个问题似乎是主观的。在某种程度上,大多数设计问题都是主观的。该代码可以在以下情况下运行:客户机处理扩展,构建器处理enirchement,或者客户机将扩展传递给第三个类,然后将扩展内容传递给构建器。然而,它们都有取舍;第一个增加了客户端的复杂性,第二个增加了构建器的复杂性,第三个增加了客户端的依赖项数量。这感觉像是一个非常常见的场景,我想我会在房间里进行民意调查,看看是否有人知道一个共同的答案。这个问题似乎很主观。在某种程度上,大多数设计问题都是。该代码可以在以下情况下运行:客户机处理扩展,构建器处理enirchement,或者客户机将扩展传递给第三个类,然后将扩展内容传递给构建器。然而,它们都有取舍;第一个增加了客户端的复杂性,第二个增加了构建器的复杂性,第三个增加了客户端的依赖项数量。这感觉像是一个非常常见的场景,我想我应该在房间里进行民意调查,看看是否有人知道一个共同的答案;至少,这提供了一种简单的方法来移动浓缩逻辑,如果它被认为以后在其他地方更好的话。只是让我的牙齿有点痒,因为一个建设者有这样的依赖性。>我知道那种不安的感觉:你知道有一个更好的设计,但它不会退出。将enricher提取为一个服务,然后构建者有一个依赖项,这似乎是目前最好的方法;至少,这提供了一种简单的方法来移动浓缩逻辑,如果它被认为以后在其他地方更好的话。只是让我的牙齿有点痒,因为一个建设者有这样的依赖性。>我知道那种不安的感觉:你知道有一个更好的设计,但它不会放弃。