模板方法模式(python)

來源:互聯網
上載者:User

模板方法模式:定義一個操作中的演算法的骨架,而將一些步驟延遲到子類中。因此模板方法使得子類可以在不改變一個演算法的結構的情況下重新定義該演算法的某些特定變數。

優點:把不變行為搬移到超類,去除子類中的重複代碼。

#encoding=utf-8##by panda#模板方法模式def printInfo(info):    print unicode(info, 'utf-8').encode('gbk')#金庸小說試題考卷class TestPaper:    def TestQuestion1(self):        printInfo('練成倚天劍和屠龍刀的玄鐵可能是[] a.球墨鑄鐵 b.馬口鐵 c.高速合金鋼 d.碳素纖維')        printInfo('答案:'+self.Answer1())        def TestQuestion2(self):        printInfo('楊過、程英、陸無雙剷除了情花,造成[] a.使這種植物不再害人 b.使一種珍稀物種滅絕 c.破壞生態平衡 d.造成該地區沙漠化')        printInfo('答案:'+self.Answer2())    def TestQuestion3(self):        printInfo('藍鳳凰致使華山師徒、桃穀六仙嘔吐不止,如果你是大夫,會給他們開什麼藥[] a.阿司匹林 b. 牛黃解毒片 c.氟呱酸 d.喝大量的生牛奶 e.以上全不對')        printInfo('答案:'+self.Answer3())        def Answer1(self):        return ''        def Answer2(self):        return ''        def Answer3(self):        return ''            #學生甲class TestPaperA(TestPaper):    def Answer1(self):        return 'A'        def Answer2(self):        return 'B'        def Answer3(self):        return 'C'#學生乙class TestPaperB(TestPaper):    def Answer1(self):        return 'B'        def Answer2(self):        return 'D'        def Answer3(self):        return 'E'def clientUI():    a = TestPaperA();    a.TestQuestion1()    a.TestQuestion2()    a.TestQuestion3()        b = TestPaperB();    b.TestQuestion1()    b.TestQuestion2()    b.TestQuestion3()    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.