Lớp Memento của ai là gì trong mẫu thiết kế Memento?


8

Trong mẫu thiết kế "Memento" của Gang of Four , Mementolớp trông giống như một lớp bọc vô dụng thực sự không cung cấp bất kỳ giá trị nào cho tôi.

Nó dùng để làm gì? Có bất kỳ lý do nào bạn không thể vượt qua Stringđối tượng (trong ví dụ Wikipedia) không?

Câu trả lời:


11

Lớp memento là lớp giữ các trạng thái khác nhau mà bạn đang xử lý trong đối tượng của mình - đó là thứ cho phép chức năng "hoàn tác / làm lại".

Ví dụ bạn đã liên kết đến trên Wikipedia khá đơn giản, trong đó "trạng thái" chỉ là một giá trị chuỗi. Hãy xem xét rằng trạng thái có thể là một loạt các thuộc tính mà bạn có thể muốn khôi phục trong "đợt" và có thể có một số điểm "hoàn tác" với.


4
Cũng lưu ý rằng việc sử dụng .clone()trong ví dụ wikipedia đó là thực tế cực kỳ xấu. Nó sẽ không bao giờ hoạt động như bạn muốn, đặc biệt là trong mô hình này. Bất cứ ai đã viết ví dụ đó cần bàn phím của họ lấy đi từ họ.

Đối tượng memento trong mẫu memento 'vanilla' hoàn toàn được sử dụng để bật "hoàn tác". Ví dụ về wikipedia (thực sự không phải là IMO tồi tệ) dường như đã giải quyết điều này ...
vaughandroid
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.