欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Python設(shè)計(jì)模式之模板方法模式實(shí)例詳解

 更新時(shí)間:2019年01月17日 11:59:02   作者:Andy冉明  
這篇文章主要介紹了Python設(shè)計(jì)模式之模板方法模式,結(jié)合實(shí)例形式較為詳細(xì)的分析了模板方法模式的概念、原理及Python定義、使用模板方法模式相關(guān)操作技巧,需要的朋友可以參考下

本文實(shí)例講述了Python設(shè)計(jì)模式之模板方法模式。分享給大家供大家參考,具體如下:

模板方法模式(Template Method Pattern):定義一個(gè)操作中的算法骨架,將一些步驟延遲至子類中.模板方法使得子類可以不改變一個(gè)算法的結(jié)構(gòu)即可重定義該算法的某些特定步驟。

下面是一個(gè)模板方法模式的一個(gè)demo:

#!/usr/bin/env python
# -*- coding:utf-8 -*-
__author__ = 'Andy'
"""
大話設(shè)計(jì)模式
設(shè)計(jì)模式——模板方法模式
模板方法模式(Template Method Pattern):定義一個(gè)操作中的算法骨架,將一些步驟延遲至子類中.模板方法使得子類可以不改變一個(gè)算法的結(jié)構(gòu)即可重定義該算法的某些特定步驟
使用場景:當(dāng)不變和可變的行為在方法的子類實(shí)現(xiàn)中混合在一起時(shí),不變的行為就會(huì)在子類中重復(fù)出現(xiàn),用模板方法模式把這些不變的行為搬到單一的地方,幫助子類擺脫重復(fù)不變的行為糾纏
"""
class NewPaper(object):
  def question1(self):
    print "題目1"
    print self.answer1()
  def question2(self):
    print "題目2"
    print self.answer2()
  def answer1(self):
    return ''
  def answer2(self):
    return ''
class TestPaperA(NewPaper):
  def answer1(self):
    return '答案A1'
  def answer2(self):
    return '答案A2'
class TestPaperB(NewPaper):
  def answer1(self):
    return '答案B1'
  def answer2(self):
    return '答案B2'
if __name__ == '__main__':
  test1 = TestPaperA()
  test2 = TestPaperB()
  print "試卷A"
  test1.question1()
  test1.question2()
  print "試卷B"
  test2.question1()
  test2.question2()

運(yùn)行結(jié)果:

試卷A
題目1
答案A1
題目2
答案A2
試卷B
題目1
答案B1
題目2
答案B2

上面類的設(shè)計(jì)如下圖:

NewPaper是抽象類,定義抽象模板并實(shí)現(xiàn)了抽象模板方法,TestPaper實(shí)現(xiàn)父類的一個(gè)或多個(gè)抽象方法

當(dāng)不變和可變的行為在子類的方法中混合在一起時(shí),不變的行為就會(huì)在子類中重復(fù)出現(xiàn),通過模板方法模式把這些行為搬到單一的地方,幫助子類擺脫重復(fù)的不變行為的糾纏

更多關(guān)于Python相關(guān)內(nèi)容可查看本站專題:《Python數(shù)據(jù)結(jié)構(gòu)與算法教程》、《Python Socket編程技巧總結(jié)》、《Python函數(shù)使用技巧總結(jié)》、《Python字符串操作技巧匯總》及《Python入門與進(jìn)階經(jīng)典教程

希望本文所述對(duì)大家Python程序設(shè)計(jì)有所幫助。

相關(guān)文章

  • Python數(shù)據(jù)處理Pandas庫的使用詳解

    Python數(shù)據(jù)處理Pandas庫的使用詳解

    這篇文章主要為大家詳細(xì)介紹了pandas庫的使用方法,包括數(shù)據(jù)導(dǎo)入與導(dǎo)出、數(shù)據(jù)查看和篩選、數(shù)據(jù)處理和分組操作等,感興趣的小伙伴可以了解一下
    2023-07-07
  • 詳解Python中的三器一閉

    詳解Python中的三器一閉

    這篇文章主要介紹了詳解Python中的三器一閉,Python中的三器一閉是指迭代器、裝飾器、生成器和閉包,需要的朋友可以參考下
    2023-05-05
  • 對(duì)python中arange()和linspace()的區(qū)別說明

    對(duì)python中arange()和linspace()的區(qū)別說明

    這篇文章主要介紹了對(duì)python中arange()和linspace()的區(qū)別說明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2020-05-05
  • pyinstaller打包python3.6和PyQt5中各種錯(cuò)誤的解決方案匯總

    pyinstaller打包python3.6和PyQt5中各種錯(cuò)誤的解決方案匯總

    pyinstaller是打包python很方便的一個(gè)套件,我們可以很輕易地使用他,下面這篇文章主要給大家介紹了關(guān)于pyinstaller打包python3.6和PyQt5中各種錯(cuò)誤解決的相關(guān)資料,需要的朋友可以參考下
    2022-08-08
  • Python?數(shù)據(jù)可視化實(shí)現(xiàn)5種炫酷的動(dòng)態(tài)圖

    Python?數(shù)據(jù)可視化實(shí)現(xiàn)5種炫酷的動(dòng)態(tài)圖

    數(shù)據(jù)可以幫助我們描述這個(gè)世界、闡釋自己的想法和展示自己的成果,但如果只有單調(diào)乏味的文本和數(shù)字,我們卻往往能難抓住觀眾的眼球。而很多時(shí)候,一張漂亮的可視化圖表就足以勝過千言萬語
    2022-01-01
  • Python中struct模塊對(duì)字節(jié)流/二進(jìn)制流的操作教程

    Python中struct模塊對(duì)字節(jié)流/二進(jìn)制流的操作教程

    最近在學(xué)習(xí)python網(wǎng)絡(luò)編程這一塊,在寫簡單的socket通信代碼時(shí),遇到了struct這個(gè)模塊的使用,當(dāng)時(shí)不太清楚這到底有和作用,后來查閱了相關(guān)資料大概了解了,這篇文章就主要介紹了Python中struct模塊對(duì)字節(jié)流/二進(jìn)制流的操作,需要的朋友可以參考借鑒。
    2017-01-01
  • 圖文詳解WinPE下安裝Python

    圖文詳解WinPE下安裝Python

    這篇文章主要以圖文結(jié)合的方式詳細(xì)介紹了WinPE下安裝Python的具體實(shí)現(xiàn)步驟,文中安裝步驟介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2016-05-05
  • python中if及if-else如何使用

    python中if及if-else如何使用

    在本篇文章里小編給大家整理的是關(guān)于python中if及if-else使用方法,需要的朋友們可以參考下。
    2020-06-06
  • 給你選擇Python語言實(shí)現(xiàn)機(jī)器學(xué)習(xí)算法的三大理由

    給你選擇Python語言實(shí)現(xiàn)機(jī)器學(xué)習(xí)算法的三大理由

    這篇文章主要介紹了給你選擇Python語言實(shí)現(xiàn)機(jī)器學(xué)習(xí)算法的三大理由,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-11-11
  • python openvc 裁剪、剪切圖片 提取圖片的行和列

    python openvc 裁剪、剪切圖片 提取圖片的行和列

    這篇文章主要介紹了python openvc 裁剪、剪切圖片 提取圖片的行和列,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2019-09-09

最新評(píng)論