2017-04-08 91 views
0

我正在做一个可以生成多种类型文档的软件。基于数据源生成多个文档的设计模式

比方说,它可以为我们生成包含在XML中的下列属性的发货单据:

  • 收件人全名(为CustomerService提供)
  • 收件人地址(由AddressService提供)
  • 产品(由ProductService提供)

如果产品类型是ProductType.CAR,则文档还应该具有Car模型(由CarService提供给定) e product id以前由ProductService提取)。

我也希望能够生成另一个使用相同服务的文档,但以不同的方式提供信息(例如,只有姓而不是全名)。

我的目标是尽可能懒惰地获取这些信息(即,我不想通过调用文档的所有可能的信息源来开始生成文档 - 主要是因为这需要我设置层次结构对于这些调用,因为1信息可能依赖于另一个信息 - 在上面的示例中,如果产品碰巧是汽车,我需要提供从ProductService获取到CarService的产品ID)。

这是否看起来像一些设计模式?

我很怀疑主要是在Bridge和Builder之间......但是我无法让它与其中的任何一个工作到目前为止。我总是在我的DocumentWriter里面有一些业务逻辑;或与一些只是NoOp的呼叫。

回答