質問

書い構造モデリングツールの市民engineringます。していました巨大なモデルクラス全体を代表する建築など、所蔵のノード、ライン要素は、荷重など。でもカスタム。

ってコードされ、元に戻すエンジンを実現する深い-コピー後の各修飾のモデルです。今考えるようになればいコードとは異なります。代わりの深部までも保存リストの各修飾子はアクションに対応する逆を模倣しています。その逆の修飾子の現在のモデルを元に戻すには、または修飾子のめりになりやすい。

なんとなく想像できなどがあったにもかかわらず、長い単純なコマンドに変化するオブジェクトのプロパティ。かつ複雑なコマンド?のように挿入す新しいノードオブジェクトのモデルをラインオブジェクト参照くの新しいノード。

はどのように一つの実施。

役に立ちましたか?

解決

最例などの見用の変異体の コマンド-パターン ます。各ユーザー行動をとることの差戻し可能な取得し、独自のコマンドインスタンスのすべての情報を実行する行動ですが、なかなか難しいです。きの一覧表を維持するすべてのコマンドが実行されているのでロールします。

他のヒント

だと思うの遺品は、コマンドを実行きのモデルのサイズ範囲のOPされることも示唆しています。そうだが、多くの維持-向上のために。

この問題になると思いまの構築を支援するデータモデルの微分場のための 各オブジェクト のモデルです。ってきたことをここでもタイムには満足している。最大のものがたくさんあります。を回避する直接的利用のポインタ参照のモデルです。

毎参考に別のオブジェクトを一部使用した識別子(のような整数).いつのオブジェクトに必要なすルックアップの現在の定義オブジェクトを表示します。のテーブルを含むリンクされたリスト内の各オブジェクトを含むすべての以前のバージョン、情報に関する検問所で活躍した。

実施undo/redoソフトバンクグループな行動を検;ロールバックすべてのオブジェクトバージョン前チェックポイントであ

かけそうですが、多くの利点:必要な深部から確認することができま保存微分モデルの状態できる範囲のメモリを利用したい(非常に 重要なもののようなCADモデルのいずれかの数redosやメモリを使用し非常にアクセスが低メンテナンスの機能に対する操作を行うモデルからないものをundo/redo.

れません!GoF、 記念品 パターンを具体的にはアドレスを元に戻す.

他人のように述べてのコマンドパターンは非常に強力な方法の実施Undo/Redo.あらかんのコマンドパターンです。

実施にあたってundo/redoのコマンドを使用してパターンはできるので大量の重複コードによる抽出(程度)の場データを操作を元に戻す/再実行のシステム。例えばテキストエディタでカット&ペーストして補完的なコマンドの外からの管理をクリップボード).つまり、元に戻す操作のためにカットペーストを元に戻す操作のためのペースト状にカットします。これにより簡単な操作タイピングおよび削除します。

のビジネスモデルでビジネスをして御利用できるアンドゥ/リドゥシステムとして、次のコマンドシステムます。代わりに、問い合わせのシステム"などを元に戻すオブジェクトを変更するか、書き"を元に戻すオブジェクトの実行を再実行の操作元に戻すオブジェクトを変更する書類".

今、確かに、多くの人が考える"自分のこともduhんの一部のポイントコマンドパターン?" その通りですが、私があるので、コマンドシステムとしてのコマンドは、直ちに事業別セットundo/redo.ると言うつもりはありませんなコマンドに特有の当面の運営、アンドゥ/リドゥが減の複製のコードにより保守性.

するための Paint.NET コード その取り消し-いったん取り消します。あるんじゃないでしょうか、少しシンプルにした方がよいだものとして過ごせばよいかを教えてくれるアイデアやガイドライン

-アダム

これまでのプログラムの場合 CSLA 対象となります。でしていただくことを目的とした複雑な運動への支援物をWindowsに合わせて調整できます。

私の実施複雑な運動システムsucessfullyの思い出パターンやかなのに自然を再実行の枠組みます。より繊細なメリットは集合行為も含まれていること一つの取り消します。

このように、いつ書架の遺品。一のための取り消しは、その他のめりになりやすい。毎新しく作成し記念品、理想的には一見すると通話状態を変更すのモデルでは、文書など).これには元に戻すスタックです。だけど、元に戻す操作は、実行の取り消しに対する記念品オブジェクトのモデルもまた、ポップのオブジェクトの取り消しスタックを押しで、やり直しスタックです。

の方法の変更のお客様の文書の実施により完全に自の実装です。できれば単なるAPI呼び出しなどChangeColour(r,g,b))に先行するクエリを取得するためにどの保存に対応する。そのパターンも支援に取組んでいくプロジェクトのコピーメモリスナップショット、ファイルの作成などですでは単なる仮想メソッドの実装です。

い集合行為(ユーザーシフトを選択し負荷のオブジェクトな操作などの削除、名前の変更、変更属性)、コードを元に戻すスタックとして単一の遺品を渡しと実際の操作を追加する個々の業務です。での動作方法なのは、(a)、グローバルスタックの心配および(b)できるコードと同じかどうかは実行の分離としての総動作します。

多くのアンドゥシステム-メモリのみがきが続くと、"元に戻すスタックの出をご希望の場合は、によるものだと考えられます。

けてのコマンドパターンに私のアジャイル開発本もそれってどうするのかは

すべてのコマンドの実行コマンドインタフェースは、Execute()法です。したい場合は元に戻ることができ、元に戻す方法です。

詳細情報 こちらの

私も周りの人間も使って Mendelt Siebenga このコマンドパターンです。のパターンを使用した、記念品のパターンができな無駄が多い。

のまねメモリの集中-用途、対応することができるでしょうのいずれかを指定などメモリの運動エンジンをかけることが許され、どのように多くのレベルを元に戻すを保存、または一部の保管ているが永続化されます。きないこと、まもなく面誤差による機械に出のメモリを消費します。

いまチェックがあるかどうかの枠組みが既に作成されているモデルundosのプログラミング言語/の枠組みます。でも新しいものが良いのか、既に、デバッグおよび試験実ざいます。この場合で追加したいでこれを書きな人にお勧めできる枠組ん。

Codeplexプロジェクト:

シンプルな枠組みを追加Undo/Redo機能や用途に基づき、古典的なコマンドのデザインパターンです。この統合の行動で入れ子取引の遅延行執行トップレベルのトランザクションコミット)では非線形運動の歴史ができると広範囲にわたり、これまでに複数の動作を再実行).

一例を読んでから、コマンドまたは記念品パターンです。ができなデザインパターンも簡単に deque構造.

トを扱う時に元に戻すには、利用はお断りしておいても、ソフトウェアに適したマルチユーザーの連携が実現 業務変革 のデータ構造です。

このコンセプトは非常に人気が定義されます。場合の定義を見抽象的す このプロジェクト での成功にどのように業務変革のためのJSONオブジェクトが定義され、実施されJavascript

参考までに、こちらのシンプルな実装のコマンドのパターン"元に戻す/再実行"のクライアントまで、フルのC#: 簡単に元に戻す/再実行のシステムのためのC#.

して再生したファイルの読み込みや保存がで直列化コード"オブジェクト"のための便利な形に保存-復元の状態全体のオブジェクトです。押しの方に直列化されたオブジェクトの取り消しスタックとしての情報がどのような操作を行い、ヒントのアンドゥ-グ動作がないと十分な情報から得ら直列化されたデータです。元に戻すと、やり直しばしばに置き換えるオブジェクトの他(論)によって構成されている。

多くの多くのバグによるポインタ(C++)をオブジェクトしたのがはじまりと固定していますが奇数を追配列(その場所に更新されないより安全な運動知の"識別子").バグのこの地域にないのでしばしば---う-興味深い。

一部の操作を行うことができます特別な場合のための速度/資源利用様のサイジング、動く物です。

マルチの選択を提供す興味深いの合併症です。越していたグループ分けを行うコンセプトのコードです。Kristopherジョンソンについてのコメントのサブ項目はありが大切だと考えております。

しなければいけなかった場合は、この文書は、ソルバーのためのpeg-ジャパズルゲームです。また各移動コマンドのオブジェクトを開催するに足る情報ですることが可能で終了します。私の場合これと保管を開始位置、方向の各移動します。その後、保存すべてのこれらのオブジェクトをスタックにプログラムが簡単に元に戻すとして多くの動きで、さらに後退.

また実装元に戻す/再実行のパターンPostSharp. https://www.postsharp.net/model/undo-redo

できundo/redo機能のご応募を実施せずに、パターン。この記録パターンの変化を、モデルやでINotifyPropertyChangedパターンも実施されPostSharp.

するUIを制御できるように、名前および粒度の運用となります。

またアプリケーションするすべての変更によるコマンドを、アプリケーションのモデル(CDocument...使用していましたMFC)を保持末のコマンドによる更新分野の内部データベース内のモデルです。この書分離元に戻す/再実行のコード行を元に戻すスタックだけを記憶に主キーのフィールドの名前は、旧値は毎回記録を変更しました(末を出力します。

第一部デザインパターン(GoF,1994)では利用の場合の実施と、"元に戻す/再実行"としてデザインパターンです。

お客様の当初performant.

使用 永続的なデータ構造, は、棒を維持しながら、今 リストの参照は、旧州周辺.がけるだけの作品がすべての業務データの状態のクラスは不変で、全ての操作を返します新しいバージョン---その新しいバージョンである必要はありませんィープコピー、変更後のパーツ'copy-on-write'.)

私はこのコマンドパターンは非常に有用です。の代わりに実施複数の逆コマンドを使用していロールバックとの遅延実行の第二のインスタンスのAPIです。

このアプローチ妥当と思われるしたい場合は低い実行力を容易で保守性(ときにメモリのための第2回インスタンス).

は、こちらをご覧ください例:https://github.com/thilo20/Undo/

わからない場合には使用いたしてしまっているんですけど出なければいけなかったものと同様のプロジェクトでは、わたし結ダウンロードUndoEngineから http://www.undomadeeasy.com -素晴らしいエンジンかかりすぎて何をしたり、ボンネットでばかります。

私の意見、アンドゥ/リドゥが実施した2つの方法である。1.コマンドのレベルと呼ばれるコマンドのレベルをUndo/Redo) 2.文書レベルと呼ばれるグローバルUndo/Redo)

コマンド:多くの答えが、これは効率的に達成を記念パターンです。場合は、コマンドにも対応journalizingのアクションやり直しが容易に対応します。

限定数:一度の範囲は、コマンドのアンドゥ/リドゥができ、文書レベル(グローバル)undo/redo

をしてくだ場合も、グローバルアンドゥ/リドゥ年に最適なicとなっています。モデルについては、これまでメモリ空間です。また、このには適した選択的に元に戻す/やり直します。がプリミティブ型

  1. すべてのメモリundo/redo
  2. オブジェクトレベルを追

"全メモリアンドゥ/リドゥ"のメモリとして扱われの接続データなどのツリーのリストまたはグラフのメモリ管理により重点が移りつつある。新しい削除事業者の場合はC++では過負荷より多く含まれている特定の構造を効果的に実施し業務など。た場合のノードが変更され、b.保清算データ等 この機能は基本的にコピー全体のメモリとメモリ割り当てを最適化や管理を利用した応用の高度なアルゴリズム)、店舗でスタックです。の場合はコピーをメモリに求められたときは、ツリー構造をコピーに基づいておく必要が浅い深くコピーします。ディープコピーについては、その変数が変更されます。すべての変数に割り当てをカスタムの配分は、アプリケーションの最終発言の際には削除する必要がある場合、そのままです。っていくのか非常に興味深いまたは分割、Undo/Redoできる必要がありまprogramatically-選択的に元に戻す/再実行の設定が動作します。この場合、新しい変数は削除、または変数をコントロールしたり、改変されるフラグで"元に戻す/再実行"のみのり消し/redoes方メモリ ものになってくると面白いが、必要な部分的に元に戻す/再実行の内部オブジェクトです。その場合、新しい発想の"お客様のパターン"を使用します。ここでいう"オブジェクトレベルを元に戻す/やり直し"

  1. オブジェクトレベルのUndo/Redo:場合に通知を元に戻す/再実行"と呼ばれ、オブジェクトを実装しますストリーミング操作に記載のトリーマを返しオブジェクトからのデータ/データであるプログラムしデータのない支障をきたすことは撹乱を受けていない.各オブジェクトがストリーマを引数として与えた場合、その内のUNDo/Redoでの流れ/unstreamsのデータをオブジェクトです。

次の1-2の両方が行方法など 1.BeforeUndo() 2.AfterUndo() 3.BeforeRedo() 4.AfterRedo().これらの方法を掲載する"基本"元に戻す/再実行"コマンドの文脈のコマンドのようにすべてのオブジェクトの実施これらの方法ものを特定です。

良い戦略は、ハイブリッドの1、2.の美しさは、これらの方法(1&2)自らの使用コマンドパターン

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top