memento

package
v0.0.0-...-6db54d9 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Apr 15, 2021 License: MIT Imports: 0 Imported by: 0

README

Хранитель (Memento)

Паттерн Memento относится к поведенческим паттернам уровня объекта.

Паттерн Memento получает и сохраняет за пределами объекта его внутреннее состояние так, чтобы позже можно было восстановить объект в таком же состоянии. Если клиенту в дальнейшем нужно "откатить" состояние исходного объекта, он передает Memento обратно в исходный объект для его восстановления.

Паттерн оперирует тремя объектами:

  1. Хозяин состояния (Originator);
  2. Хранитель (Memento) - Хранит в себе состояние объекта-хозяина класса Originator;
  3. Смотритель (Caretaker) - Отвечает за сохранность объекта-хранителя класса Memento.

Требуется для реализации:

  1. Класс Originator, у которого есть какое-то меняющиеся состояние, а так же он может создавать и принимать хранителей (Memento) своего состояния;
  2. Класс Memento, реализует хранилище для состояния Originator;
  3. Класс Caretaker, получает и хранит объект-хранитель (Memento), пока он не понадобится хозяину.

[!] В описании паттерна применяются общие понятия, такие как Класс, Объект, Абстрактный класс. Применимо к языку Go, это Пользовательский Тип, Значение этого Типа и Интерфейс. Также в языке Go за место общепринятого наследования используется агрегирование и встраивание.

-- THE END --

Documentation

Overview

Package memento is an example of the Memento Pattern.

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type Caretaker

type Caretaker struct {
	Memento *Memento
}

Caretaker keeps Memento until it is needed by Originator.

type Memento

type Memento struct {
	// contains filtered or unexported fields
}

Memento implements storage for the state of Originator

func (*Memento) GetState

func (m *Memento) GetState() string

GetState returns state.

type Originator

type Originator struct {
	State string
}

Originator implements a state master.

func (*Originator) CreateMemento

func (o *Originator) CreateMemento() *Memento

CreateMemento returns state storage.

func (*Originator) SetMemento

func (o *Originator) SetMemento(memento *Memento)

SetMemento sets old state.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL