-
Notifications
You must be signed in to change notification settings - Fork 7
/
Copy pathnotepad_memento.puml
59 lines (42 loc) · 1.15 KB
/
notepad_memento.puml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
@startuml
skinparam classAttributeIconSize 0
interface "Interface \n Memento" as Memento{
+{abstract} state():string
+{abstract} date():string
+{abstract} getName():string
}
class ConcreteMemento{
- string m_state
- string m_date
+ ConcreteMemento(string state)
+ string state()
+ string date()
+ string getName()
}
class Originator
{
-string m_state;
+ Originator(string state) : m_state(state)
Memento *Save()
Restore(Memento* memento)
changeText(string text):void
}
note "this->m_state = text" as OriginatorChangeText
OriginatorChangeText .. Originator::changeText
class CareTaker
{
-stack<Memento*> m_mementos;
-Originator *m_originator;
+CareTaker(Originator *originator)
+backUp():void
+undo():void
}
note "this->m_mementos.push(this->m_originator->Save())" as CareTakerBackUp
note "Memento* memento= m_mementos.top() \n m_mementos.pop() \n this->m_originator->Restore(memento)" as CareTakerUndo
CareTakerBackUp .. CareTaker::backUp
CareTaker::undo .. CareTakerUndo
ConcreteMemento -up..|> Memento
Originator -up..> Memento
Originator <--> ConcreteMemento
CareTaker -up--> Memento
@enduml