異なるファイル形式を保存およびロードするときに使用するのに適したパターンはありますか?
たとえば、ドキュメントのクラス階層が複雑ですが、いくつかの異なるファイル形式をサポートしたいと考えています。
Strategy パターンについて考えましたが、オブジェクトを保存およびロードするためにオブジェクトのすべての部分にアクセスする必要があるため、納得できません。
異なるファイル形式を保存およびロードするときに使用するのに適したパターンはありますか?
たとえば、ドキュメントのクラス階層が複雑ですが、いくつかの異なるファイル形式をサポートしたいと考えています。
Strategy パターンについて考えましたが、オブジェクトを保存およびロードするためにオブジェクトのすべての部分にアクセスする必要があるため、納得できません。
Visitor Patternを使用できます。これにより、Visitor が現在処理しているノードに応じて、さまざまな操作を実行して階層を反復処理できます。
悪いニュース: おそらく階層の最上位に少なくとも仮想メソッドを追加し、いくつかの派生クラスでそれを再定義する必要があり、ビジターは引き続きノードのデータにアクセスしますが、異なるビジターとしてファイル形式を分離します実装は、さまざまな方法で収集されたデータを書き込むことができます。
クラス階層データを非表示にする必要がある場合は、 memento パターンも参照してください。こちらの記事も参考になります。
編集: Google キャッシュを使用して元のMemento パターン記事へのリンク
You might want to take a look at the Builder pattern. GoF page 97..
Template メソッドのパターン (に基づくもの) はどうですか?
1 つのスーパークラスは、クラス階層を分割する方法を知っていますが、実際に何か役に立つことをサブクラスに依存しています。