python设计模式(备忘录模式)

学习版本3.5.2

#学习版本3.5.2
'''备忘录模式就是在不破坏封装的前提下,捕获一个对象的内部状态,并在该对象之外保>存这个状态,这样可以在以后将对象恢复到原先保存的状态'''
#例如:我在游戏里先存个档,然后花50金币买了件武器,发现这个武器不好用,就读档
#花那100金币去买了另一件武器

#存档类
class Memento(object):
    def __init__(self, money):
        self.money = money

    def getMoney(self):
        return self.money

    def setMoney(self, money):
        self.money = money
#玩家类
class Player(object):
    def __init__(self, money):
        self.money = money

    def useMoney(self, n):
        self.money -= n
        print("use money:",n)
        print("money:",self.money)

    def displayMoney(self):
        print("money:",self.money)
    #存档
    def saveMemento(self):
        return Memento(self.money)
    #读档
    def restoreMemento(self, memento):
        self.money = memento.getMoney()

if __name__ == "__main__":
    p = Player(110)
    mymemento = p.saveMemento()
    p.displayMoney()
    p.useMoney(50)
    print("="*20)
    p.restoreMemento(mymemento)
    p.displayMoney()
    p.useMoney(100)

运行结果

money: 110
use money: 50
money: 60
====================
money: 110
use money: 100
money: 10


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值