動機と実装の面で、 DTO パターン(Fowler による) とMemento パターン(GoF による)の違いは何ですか? 同じクラスでもいいですか?はいの場合、どのように名前を付けることができますか (xxxDTO または xxxMemento)? 実装に主な違いはありますか? MVPアーキテクチャのどこに位置するのでしょうか?
ありがとう。
動機と実装の面で、 DTO パターン(Fowler による) とMemento パターン(GoF による)の違いは何ですか? 同じクラスでもいいですか?はいの場合、どのように名前を付けることができますか (xxxDTO または xxxMemento)? 実装に主な違いはありますか? MVPアーキテクチャのどこに位置するのでしょうか?
ありがとう。
それらは異なる目的を果たします。DTO は、ソフトウェア アプリケーションのレイヤーや層の間でオブジェクトを転送するために使用される設計パターンです。一方、メメントは、必要に応じて後で復元できる状態を外部化することにより、オブジェクトが元に戻す機能を提供できるようにする別の設計パターンです。クラスの DTO クラスと Memento クラスは似ているかもしれません。単純な古い {Insert Technology Here} オブジェクト - PO?O またはまったく同じに見えるかもしれません。ただし、それらは異なるニーズに対応し、異なる進化を遂げるため、分離しておく必要があります。たとえば、いつか DTO クラスにプロパティを含める必要があるかもしれませんが、同じプロパティはオブジェクトの状態管理にとって重要ではないため、memento クラスに追加する必要はありません。
もう 1 つの側面は、通常、DTO はクラスの外で行われ、クラスは DTO についてまったく理解していないことです。実際、データ マッピングを処理するフレームワークが世の中に存在します。一方、memento パターンの場合、クラスは、CreateMemento、RestoreFromMemento などの UML ダイアグラムに表示されるような API を提供する必要があります。
この 2 つは、非常に異なる目的で使用されることがよくあります。ここで、どこを混同しているのでしょうか。DTO はデータ転送 (キャリア クラス) に関するものですが、memento は変更を追跡し、それらの変更をロールバックできるようにすることに関するものです。それ以上に、あなたの質問から何があなたを混乱させているのかわかりません。