メモ モードは、スナップショット モードまたはトークン モードとも呼ばれます。これは、オブジェクトの内部状態をキャプチャし、クロージャを破壊せずにこの状態をオブジェクトの外部に保存します。これにより、後でオブジェクトを元の保存状態に復元できます。
UML クラス図:
キャラクター:
1. イニシエーター (GameRole): 現時点での自身の内部状態を記録するメモの作成を担当し、そのメモを使用して内部状態を復元できます。発信者は、必要に応じて、メモにどの内部状態を保存するかを決定できます。
2. メモ (RoleStateSaveBox): イニシエーター オブジェクトの内部状態を保存し、イニシエーター以外の他のオブジェクトがメモにアクセスできないようにします。メモには 2 つのインターフェイスがあります。管理者はメモの狭いインターフェイスしか見ることができず、メモを他のオブジェクトに渡すことしかできません。ただし、開始者はメモの幅広いインターフェイスを認識するため、以前の状態に戻すために必要なすべてのデータにアクセスできます。
3. マネージャー (GameRoleStateManager): メモへのアクセスを担当し、コンテンツにアクセスしたり操作したりすることはできません。
コアコード:
リーリー
利点:
1. イニシエーター オブジェクトの一部の内部情報をイニシエーター オブジェクトの外部に保存する必要がある場合がありますが、このとき、メモ モードを使用してイニシエーターの複雑な内部情報を他のものに転送できます。カプセル化の境界が適切に維持されるようにオブジェクトがシールドされます。
2. このモードは、開始者を簡素化します。イニシエーターは内部状態のバージョンを管理および保存する必要がなくなり、クライアントは必要なこれらの状態のバージョンを管理できるようになります。
短所:
1. イニシエーター ロールのステータスをメモ オブジェクトに完全に保存する必要がある場合、メモ オブジェクトはリソース消費の点で非常に高価になります。
2. 担当者がメモを保存する場合、そのステータスがどのくらいのストレージスペースを占めるかが分からないため、操作が高価であるかどうかをユーザーに思い出させることができません。
私のビデオコースをフォローすることを歓迎します。アドレスは次のとおりです、ありがとうございます。
PHP オブジェクト指向デザインパターン