備忘錄模式(python)

來源:互聯網
上載者:User

備忘錄模式:在不破壞封裝性的前提下,捕獲一個對象的內部狀態,並在該對象之外儲存這個狀態。這樣以後就可將該對象恢複到原先儲存的狀態。

跟原型模式很像,不過在原型模式中儲存對象的一切,而備忘錄模式中只儲存恢複時需要的資料。

#encoding=utf-8##by panda#備忘錄模式def printInfo(info):    print unicode(info, 'utf-8').encode('gbk')#Originator:遊戲角色類class GameCharacter():    vitality = 0 #生命力    attack = 0  #攻擊力    defense = 0 #防禦力        def DisplayState(self):        printInfo('角色目前狀態')        printInfo('\t生命力:%d' % self.vitality)        printInfo('\t攻擊力:%d' % self.attack)        printInfo('\t防禦力:%d' % self.defense)            def InitState(self):        self.vitality = 100        self.attack = 100        self.defense = 100            def Fight(self):        self.vitality = 0        self.attack = 0        self.defense = 0            #儲存狀態    def SaveState(self):        return RoleStateMemento(self.vitality, self.attack, self.defense)        #恢複狀態    def RecoveryState(self, memento):        self.vitality = memento.vitality        self.attack = memento.attack        self.defense = memento.defense#Memento:角色狀態儲存箱class RoleStateMemento():    vitality = 0 #生命力    attack = 0  #攻擊力    defense = 0 #防禦力        def __init__(self, vitality, attack, defense):        self.vitality = vitality        self.attack = attack        self.defense = defense#Caretaker:角色狀態管理者class RoleStateCaretaker():    memento = None    def clientUI():    printInfo('----大戰Boss前----')    id1 = GameCharacter()    id1.InitState()    id1.DisplayState()        printInfo('----儲存進度----')    stateAdmin = RoleStateCaretaker()    stateAdmin.memento = id1.SaveState()        printInfo('----大戰boss,損耗嚴重----')    id1.Fight()    id1.DisplayState()        printInfo('----恢複之前的狀態----')    id1.RecoveryState(stateAdmin.memento)    id1.DisplayState()    returnif __name__ == '__main__':    clientUI();

類圖:

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.