Python设计模式之模板方法模式实例详解

yipeiwu_com4年前Python基础

本文实例讲述了Python设计模式之模板方法模式。分享给大家供大家参考,具体如下:

模板方法模式(Template Method Pattern):定义一个操作中的算法骨架,将一些步骤延迟至子类中.模板方法使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。

下面是一个模板方法模式的一个demo:

#!/usr/bin/env python
# -*- coding:utf-8 -*-
__author__ = 'Andy'
"""
大话设计模式
设计模式——模板方法模式
模板方法模式(Template Method Pattern):定义一个操作中的算法骨架,将一些步骤延迟至子类中.模板方法使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤
使用场景:当不变和可变的行为在方法的子类实现中混合在一起时,不变的行为就会在子类中重复出现,用模板方法模式把这些不变的行为搬到单一的地方,帮助子类摆脱重复不变的行为纠缠
"""
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()

运行结果:

试卷A
题目1
答案A1
题目2
答案A2
试卷B
题目1
答案B1
题目2
答案B2

上面类的设计如下图:

NewPaper是抽象类,定义抽象模板并实现了抽象模板方法,TestPaper实现父类的一个或多个抽象方法

当不变和可变的行为在子类的方法中混合在一起时,不变的行为就会在子类中重复出现,通过模板方法模式把这些行为搬到单一的地方,帮助子类摆脱重复的不变行为的纠缠

更多关于Python相关内容可查看本站专题:《Python数据结构与算法教程》、《Python Socket编程技巧总结》、《Python函数使用技巧总结》、《Python字符串操作技巧汇总》及《Python入门与进阶经典教程

希望本文所述对大家Python程序设计有所帮助。

相关文章

深入理解Python中变量赋值的问题

前言 在Python中变量名规则与其他大多数高级语言一样,都是受C语言影响的,另外变量名是大小写敏感的。 Python是动态类型语言,也就是说不需要预先声明变量类型,变量的类型和值在赋值...

Python实现提取文章摘要的方法

本文实例讲述了Python实现提取文章摘要的方法。分享给大家供大家参考。具体如下: 一、概述 在博客系统的文章列表中,为了更有效地呈现文章内容,从而让读者更有针对性地选择阅读,通常会同时...

Python使用字典的嵌套功能详解

当需要存储很多同类型的不通过数据时可能需要使用到嵌套,先用一个例子说明嵌套的使用 1、在列表中存储字典 #假设年级里有一群国际化的学生,有黄皮肤的中国人、有白皮肤的美国人也有黑皮肤的...

Python实现一个Git日志统计分析的小工具

前言 本文介绍的是利用Python实现的一个小工具,用于分析Git commit log,获得Git Project每个成员的简单行为数据。 Warning:代码量不能代表程序员能力水...

python友情链接检查方法

本文实例讲述了python友情链接检查方法。分享给大家供大家参考。具体实现方法如下: # _*_ coding:utf-8 _*_ #xiaohei.python.seo.call....