Mẫu này được sử dụng nhằm mục đích không làm phá vỡ tính bao gói (encapsulation) nhưng vẫn lưu giữ và thể hiện được trạng thái bên trong đối tượng để sau này đối tượng có thể phục hồi lại trạng thái trước đó.
* Cấu trúc của mẫu
Các thành phần tham gia vào cấu trúc Memento:
Memento: Lưu giữ trạng thái riêng của đối tượng nguồn Originator, bảo
vệ chống truy xuất bởi các đối tượng khác ngoài đối tượng Originator của nó.
Originator: Tạo một Memento chứa đựng thông tin về trạng thái hiện tại
của nó. Sử dụng Memento để phục hồi lại trạng thái riêng của nó.
CareTaker: Phản hồi về sự giữ an toàn của Memento. Đảm bảo việc không bao giờ thao tác hay truy xuất đến nội dung của Memento.
* Phạm vi ứng dụng mẫu
Ta thường sử dụng mẫu Memento khi một thông tin của trạng thái đối tượng phải được lưu lại để nó có thể được phục hồi lại trạng thái đó sau này.
Khi cần các giao tiếp trực tiếp với các trạng thái chi tiết bên trong của đối tượng mà không phá vỡ tính bao gói của đối tượng.
- 33 –
Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên http://www.lrc-tnu.edu.vn
* Nhận xét
Sử dụng mẫu Memento cho phép ta duy trì được sự bao gói của đối tượng. Mẫu Memento tránh được việc làm lộ thông tin mà chỉ người tạo ra mới được biết và quản lý.
Sử dụng mẫu này làm đơn giản hóa đối tượng Originator, người dùng chỉ quản lý các tình trạng do Originator yêu cầu và tránh được việc người dùng phải thông báo cho Originator khi họ thực hiện xong.
Memento có thể bị quá tải nếu đối tượng nguồn Originator phải sao chép khối lượng lớn những thông tin lưu trữ hay nếu người dùng tạo và trả lại Memento cho Originator khi đối tượng này đã đầy.