問題タブ [memento]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c# - 一般的なフィールド変更イベント
現在、何百ものクラスのロガーを作成しようとしています。これは、3 つのプロパティの変更をリッスンし、変更があった場合はログ メッセージを作成します。
リッスンするオブジェクトのコンストラクターで 3 プロパティを渡しますが、変更をリッスンするには、このクラスにOnPropertyChangedイベントが必要です。
(リッスンされたオブジェクトのプロパティ セッターに書き込むことはできません。)
この計画は実行可能ですか?そうでない場合は、別のオプションを提案していただけますか?
orm - Factory を使用したマッピングと再構成のためのドメイン モデル スナップショット
パターン、原則、DDD の本で、ドメイン モデルを完全にカプセル化したい場合は、そのプロパティを非公開にし、Mementoパターンを使用してそれらを読み取ることができると読みました。リポジトリがドメイン モデルのスナップショットを取得し、データベース モデルにマップしてその変更をデータベースに保存する例もありました。また、db からデータベース モデルを取得し、それをスナップショットにマップしてから、Factoryパターンを使用してスナップショットからドメイン モデルを再構成し、それを操作します。
- ファクトリやスナップショットを使用せずに、データベース モデルをドメイン モデルにマップするだけで、ここでどれだけの作業が行われるのか、少し混乱しています。これははるかに簡単ではありませんか?
この本に従うなら、ドメイン モデルのスナップショットをサービス レイヤーからプレゼンテーション レイヤーに戻し、それをビュー モデルにマップするのが正しい方法ですか? または、プレゼンテーション レイヤーでスナップショットを作成し、それをサービス レイヤーに渡し、ファクトリ パターンを使用してそこで再構成し、ドメイン モデルをリポジトリに渡します。リポジトリでは、再びスナップショットを取得してデータベース モデルにマップし、デシベル....
このような複雑なマッピング アーキテクチャを使用する必要がある場合の例を教えてください。
はるかに簡単にできるのに、複雑なコードを書いているような気がします。
アップデート
私が求めていることを理解しやすくするために、コード例を載せることができます。;)
eclipse-plugin - IMementoを使用してビューパーツのすべての情報を保存する方法は?
ViewPart を拡張するビューを使用する Eclipse プラグインがあります。ViewPart には IMemento を必要とする saveState メソッドがあります。コードを saveState と対応する init-Method に追加したところ、機能しました。
3 つのハッシュマップを作成しました。
1) hmTextONLY:テキスト値のみが含まれます。(列名(ColumnIndex):Threarname(1)、categoryname(2)、description(5)、justification(6))
2) hmCOMBO1ONLY:コンボボックス 1 の値のみが含まれます。(列名 (列インデックス): status(3))
3) hmCOMBO2ONLY:コンボボックス 2 値のみが含まれます。(列名(列インデックス):優先度(4))
コードで使用されるメソッドの説明はこちら。
init : ビューを初期化します。
createPartControl : ビュー パーツにテーブルを作成します。
fillRows : テーブル内のデータは、このメソッドから取得されます。行ごとに。saveState: このメソッドは、データを保存するのに役立ちます。saveState は、ワークスペース全体がシャットダウンしている場合にのみ呼び出されます。
saveState:これは、アプリケーションを閉じるときにワークスペースを保存するために使用されます。
質問: 1) 状態保存メソッドを使用して、テーブル全体のデータをシーケンシャル (テキストの混合、コンボボックス) に保存する方法は? saveState メソッドで子フォーム Id1 を 1 つ作成しました。
コード:
上記のコードの現在の出力:
design-patterns - memento デザインパターンを使用して複数のオブジェクトの状態を保存するにはどうすればよいですか?
記念品がどのように実装されることになっているかについて、私は非常に混乱しています。
MementoにはStateがあることを理解しています。また、Memento パターンは、オブジェクトを以前の状態に復元できるように、さまざまな (以前の)状態を保存するために使用されます。
複数のオブジェクトがあるとしましょう。それぞれに 10 個の属性があり、そのうちの 5 個は個々のオブジェクトの存続期間を通じて同じままですが、そのうちの 5 個は変更されます。したがって、各オブジェクトが以前の状態を保存してそれらに戻る必要があります。
質問:
これらのオブジェクトにMemento パターンを適用するにはどうすればよいですか?
これまでの私の考え:
したがって、 Memento パターンには 3 つのクラスがあり、Mementoには、状態ごとに 1 つずつ、多数のクラスを作成します。オブジェクト AKA Mementosの以前の状態をすべて保存する世話人。次に、Mementosを作成し、 Mementoから状態を取得するOriginatorです。
これは、各オブジェクト インスタンスが独自のCaretaker インスタンス(以前の状態のリスト) を必要とすることを意味し、このCaretakerは、このオブジェクトの 5 つの属性の以前の状態 (および現在の状態または以前のもののみ?)を持つMementosを持つことになります。ただし、世話人を持つすべてのオブジェクトは、同じOriginator インスタンスを使用できます。これは、Originatorを使用して、任意のCaretakerに新しい記念品を作成できるためです。
これは実装方法ですか、それとも誤解していますか?
次のようになります。
オリジネーターとメメントクラス
その他のオブジェクト
別のオプション
別のクラス内に 5 つの属性をカプセル化するのではなく、Memento クラスと Originator クラスが 5 つの属性を保持するようにします。そのようです:
この方法では、各 Object1 インスタンスは Object1Attributes ではなく Originator の独自のインスタンスを保持し、この Originator には object1 インスタンスの属性の現在の状態が含まれます。パターンを実装する正しい方法がどれかわかりません。
オンラインのすべての例では、単なる文字列である「状態」を保存するために mementos を使用していますが、複数の状態を持つことができる複数のオブジェクトの作成を伴うものはないため、よくわかりません。