Memento Desain Pola
Oleh
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.
Category
Komentar