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

از ویکی‌پدیا، دانشنامهٔ آزاد

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

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

ساختار[ویرایش]

کلاس 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.