2017-04-06 53 views
1

我有一個Order值對象與getter。目前我將這個對象傳遞給一個Formatter類,它使用getters創建一個特定的數組結構。然後將此數組編碼爲JSON併發送到遠程URL。「格式化」對象的模式名稱

有不同的網址需要不同的數組結構,所以我創建了多個Formatter類,它們構建了各自的數組。在某種程度上這些格式化程序'包裝'原始對象,但我沒有一個公開的getter方法從格式化程序暴露原始對象。另外,每個格式化程序中只有一個公開方法,稱爲format

這些格式化程序可以被描述爲裝飾/包裝模式還是甚至是一種模式?我不明確尋找爲了應用模式,但我發現我在代碼的其他部分使用其他模式,並適當更名,以減少混淆。

+0

是不是一個串行器?是'format'將其序列化爲JSON的唯一目的? –

回答

0

考慮Visitor模式。訪問者允許在運行時將一個或多個操作應用於一組對象,將操作與對象結構分離。

訪問者在編譯器中使用。一旦創建了抽象語法樹(對象結構),就可以爲了不同目的遍歷AST。 在你的情況下,ObjectStructure可以是Order類,不同的目的是鏡像不同的Formatter。

+0

下面是一個問題,其答案顯示了Visitor模式的實際用法:[多輸出格式的設計模式](http://stackoverflow.com/questions/6827998/design-pattern-for-multiple-output-formats) –