دیزاین پترن Memento از دسته رفتاری در مجموعه ۲۳ پترن مشهور Gang of Four است. وضعیت یک آبجکت را به شکل Snapshot ذخیره میکند تا بعدا بدون افشای جزئیات داخلی بازیابی شود.
سناریوی واقعی در فروشگاه
کاربر ممکن است فرم پیکربندی محصول را ویرایش و بخواهد نسخه قبل از آخرین تغییر را بازگرداند.
نمونه در PHP
$history[] = $draft->snapshot();
$draft->setQuantity(5);
$draft->restore(array_pop($history));
نمونه در پایتون
from copy import deepcopy
history.append(deepcopy(draft))
draft.quantity = 5
draft = history.pop()
چه زمانی مناسب نیست؟
Memento جایگزین Backup یا تاریخچه پایدار دیتابیس نیست. عمر و حجم Snapshotها باید کنترل شود.
برای شناخت جایگاه این پترن در سه دسته اصلی، دیزاین پترن را ببینید. مقاله دیزاین پترن باورژن و دوره آموزشی باورژن نیز منابع مرتبطاند.