在Builder模式

时间:2017-05-14 20:41:25

标签: design-patterns strategy-pattern builder-pattern

我很想知道使用策略模式改变Builder对象的行为是否正常(正常)?

这是一个例子。假设我们有以下类,我想使用构建器为我的网页创建某种类型的视图模型。

BuilderA

BuilderB

StrategyA

StrategyB

  1. 我们将Data1和Data2传递给BuilderA

  2. 我们将Data3和Data4传递给BuilderB

  3. 让我们说,根据我们传入的数据,我们希望使用这些策略创建某些ViewModel。 StrategyA可以使ViewModelA和StrategyB可以制作ViewModelB。我希望能够在不改变构建器的情况下单独修改这些策略。

    如果不清楚,请告诉我,我会解释更多。

    提前致谢!

1 个答案:

答案 0 :(得分:1)

由于正常是问题,我必须明确对齐。

虽然没有严格的规则,但至少在我看来,在使用模式时,不应该有基于动机的惯例。

构建器是一种创造性的模式,而战略是一种“行为模式”。 需要考虑的几件事情。

建构者的动机就是从你的例子中我可以看到的正是你所描述的。但是,我可以看到为什么你会关注战略,有原型(线索)对象,这些对象基于状态有一些创造性差异。我当然可以看到这可能会起作用,虽然它对战略作为模式的意图做了一点暴力。

您是否考虑过将Prototype与装饰器一起使用? Prototype DP的一个典型应用是查看仅有少数几个不同的对象 国家组合。