2017-04-06 8 views
1

私はOrder値オブジェクトをゲッターで持っています。現在、私はこのオブジェクトをFormatterクラスに渡します。このクラスはゲッターを使用して特定の配列構造を作成します。この配列はJSONとしてエンコードされ、リモートのURLに送られます。'書式設定'オブジェクトのパターン名

異なる配列構造を必要とする異なるURLがありますので、それぞれの配列を構築する複数のFormatterクラスを作成しました。ある意味では、これらのフォーマッタは元のオブジェクトを「ラップ」しますが、私はパブリックメソッドから元のオブジェクトを公開するパブリックメソッドを持っていません。また、各フォーマッタで公開される公開メソッドは、formatという1つだけです。

これらのフォーマッタはデコレータ/ラッパーパターンとして記述できますか、これはまったくパターンですか?明示的にはであり、そのためにパターンを適用するにはと表示されていますが、私はコードの他の部分で他のパターンを使用していて、

+0

これはシリアライザではありませんか?それをJSONにシリアル化する 'format'の唯一の目的は何ですか? –

答えて

0

Visitorパターンを考えてください。訪問者は、実行時にオブジェクトのセットに1つまたは複数の操作を適用し、操作をオブジェクト構造から切り離すことができます。

訪問者はコンパイラで使用されます。抽象構文木(オブジェクト構造)が作成されると、ASTをさまざまな目的のためにトラバースできます。 あなたの場合、ObjectStructureはOrderクラスにすることができ、異なる目的は異なるフォーマッターを反映します。

+0

ここでは、Visitorパターンの実際の使用例を示しています。[複数出力フォーマットのデザインパターン](http://stackoverflow.com/questions/6827998/design-pattern-for-multiple-output-formats) –