2017-04-08 53 views
0

我正在做一個可以生成多種類型文檔的軟件。基於數據源生成多個文檔的設計模式

比方說,它可以爲我們生成包含在XML中的下列屬性的發貨單據:

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

如果產品類型是ProductType.CAR,則文檔還應該具有Car模型(由CarService提供給定) e product id以前由ProductService提取)。

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

我的目標是儘可能懶惰地獲取這些信息(即,我不想通過調用文檔的所有可能的信息源來開始生成文檔 - 主要是因爲這需要我設置層次結構對於這些調用,因爲1信息可能依賴於另一個信息 - 在上面的示例中,如果產品碰巧是汽車,我需要提供從ProductService獲取到CarService的產品ID)。

這是否看起來像一些設計模式?

我很懷疑主要是在Bridge和Builder之間......但是我無法讓它與其中的任何一個工作到目前爲止。我總是在我的DocumentWriter裏面有一些業務邏輯;或與一些只是NoOp的呼叫。

回答