Memento Desain Pola

chmood

   Tanpa melanggar enkapsulasi, menangkap dan eksternalisasi keadaan internal suatu objek sehingga objek dapat kembali ke negara ini nanti.
Cookie sihir yang merangkum "check point" kemampuan.
Promosikan undo atau rollback status objek penuh.
Masalah
Perlu mengembalikan sebuah objek kembali ke keadaan sebelumnya (misalnya "membatalkan" atau "rollback" operasi).

   Permintaan klien Memento dari objek sumber saat dibutuhkan untuk pos pemeriksaan negara sumber objek. Objek sumber menginisialisasi Memento dengan karakterisasi negaranya. Klien adalah "perawatan-taker" dari Memento, tetapi hanya objek sumber dapat menyimpan dan mengambil informasi dari Memento (Memento adalah "buram" untuk klien dan semua benda lain). Jika klien selanjutnya perlu "rollback" negara sumber objek, itu tangan Memento kembali ke objek sumber untuk pemulihan.

   Sebuah unlimited "membatalkan" dan "redo" kemampuan dapat segera dilaksanakan dengan tumpukan benda Komando dan setumpuk benda Memento.

Pola desain Memento mendefinisikan tiga peran yang berbeda:

   Originator - objek yang tahu bagaimana untuk menyelamatkan diri.
Caretaker - objek yang tahu mengapa dan kapan Originator perlu menyimpan dan mengembalikan sendiri.
Memento - kotak kunci yang ditulis dan dibaca oleh Originator, dan menggiring oleh Caretaker.



   The Memento menangkap dan externalizes keadaan internal suatu objek sehingga objek kemudian dapat dikembalikan ke negara itu. Pola ini adalah umum di antara do-it-yourself mekanik memperbaiki rem tromol pada mobil mereka. Drum dikeluarkan dari kedua belah pihak, mengekspos baik hak dan rem kiri. Hanya satu sisi dibongkar dan lainnya berfungsi sebagai kenang-kenangan dari bagaimana bagian rem cocok bersama-sama. Hanya setelah pekerjaan telah selesai di satu sisi adalah sisi lain dibongkar. Ketika sisi kedua dibongkar, sisi pertama bertindak sebagai Memento tersebut.

  • Mengidentifikasi peran "caretaker" dan "originator".
  • Buat kelas Memento dan menyatakan originator teman.
  • Caretaker tahu kapan harus originator "titik periksa".
  • Pencetus menciptakan Memento dan salinan negara untuk Memento itu.
  • Caretaker berpegang pada (tetapi tidak dapat mengintip ke) Memento tersebut.
  • Caretaker tahu kapan harus "memutar kembali" originator.
  • Originator reinstates sendiri menggunakan negara disimpan dalam Memento tersebut.


  • Perintah dan Memento bertindak sebagai token sihir untuk diedarkan dan dipanggil di lain waktu. Dalam Command, token mewakili permintaan; di Memento, itu merupakan keadaan internal suatu objek pada waktu tertentu. Polimorfisme adalah penting untuk Command, tetapi tidak untuk Memento karena interface-nya begitu sempit bahwa kenang-kenangan hanya bisa dilalui sebagai nilai.
  • Perintah dapat menggunakan Memento untuk mempertahankan negara diperlukan untuk operasi undo.
  • Memento sering digunakan bersama dengan Iterator. Iterator dapat menggunakan Memento untuk menangkap keadaan iterasi. Iterator yang menyimpan Memento internal.



Komentar