forked from go/golangs_learn
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
37 lines
512 B
37 lines
512 B
package memento
|
|
|
|
type Memento struct {
|
|
state int
|
|
}
|
|
|
|
func NewMemento(value int) *Memento {
|
|
return &Memento{state: value}
|
|
}
|
|
|
|
type Number struct {
|
|
value int
|
|
}
|
|
|
|
func NewNumber(value int) *Number {
|
|
return &Number{value: value}
|
|
}
|
|
|
|
func (n *Number) Double() {
|
|
n.value *= 2
|
|
}
|
|
|
|
func (n *Number) Hide() {
|
|
n.value /= 2
|
|
}
|
|
|
|
func (n *Number) Value() int {
|
|
return n.value
|
|
}
|
|
|
|
func (n *Number) CreateMemento() *Memento {
|
|
return NewMemento(n.value)
|
|
}
|
|
|
|
func (n *Number) ReginstateMemento(m *Memento) {
|
|
n.value = m.state
|
|
}
|
|
|