الگوی یادگاری

یادگاری الگوی یک الگوی طراحی نرم‌افزار است که توانایی بازگرداندن یک شیء به حالت قبلی خود (خنثیسازی از طریق عقبگرد) را ممکن می‌سازد.

الگوی یادگاری با سه شی پیاده‌سازی می‌شود: پدیدآورنده، یک سرپرست و یک یادگاری. پدیدآورنده است شیی است که به یک وضعیت داخلی دارد. سرپرست می‌خواهد تغییری در پدیدآورنده بدهد اما می‌خواهد قادر به خنثی‌سازی تغییرش باشد. سرپرست اول از پدیدآورنده یک شی یادگاری می‌خواهد. سپس هر عمل (و یا دنباله ای از عملیات) را به انجام می‌رساند. برای برگشت به حالت قبل از عملیات، شی یادگاری را به پدیدآورنده برمی‌گرداند. یادگاری خود یک شی مات است، شیئی که سرپرست نمی‌تواند و نباید تغییر دهد.

ساختار

کلاس UML و نمودار توالی

 
یک نمونه کلاس UML و نمودار توالی برای الگوی طراحی یادگاری است.[۱]

مثال پایتون

"""
Memento pattern example.
"""

class Memento(object):
    def __init__(self, state):
        self._state = state

    def get_saved_state(self):
        return self._state

class Originator(object):
    _state = ""

    def set(self, state):
        print("Originator: Setting state to", state)
        self._state = state

    def save_to_memento(self):
        print("Originator: Saving to Memento.")
        return Memento(self._state)

    def restore_from_memento(self, memento):
        self._state = memento.get_saved_state()
        print("Originator: State after restoring from Memento:", self._state)

saved_states = []
originator = Originator()
originator.set("State1")
originator.set("State2")
saved_states.append(originator.save_to_memento())

originator.set("State3")
saved_states.append(originator.save_to_memento())

originator.set("State4")

originator.restore_from_memento(saved_states[0])

منابع

  1. "The Memento design pattern - Structure and Collaboration". w3sDesign.com. Retrieved 2017-08-12.