首页 | 新闻 | 交流 | 问吧 | 文档 | 手册 | 下载 | 博客

Think in Python Design Pattern–Template Method

作者:  时间: 2011-05-27

前言:

Application FrameWork(应用程序框架)允许我们从继承其中的类,重用大部分的代码或重写其中的一个或多个方法来定制我们的程序。 Framework中一个最重要的概念就是模板(Template)

例如,我们想写一个Applet应用程序(使用它的应用程序框架),只需继承JApplet并改写它的init()方法,剩下的比如屏幕的显示,处理时间循环,等等都由Applet机制(同时也使用了Template方法)来完成。

 

先来看代码:

templateMethod.py

输出:

customized method 1
customized method 2
customized method 3

 

基类构造器负责必要的初始化后调用template Method,客户程序只需改写其中的customize方法。

关键点:1.customize方法在基类中次序是固定的

          2.无需继承基类中的__init__()

我们称__init__为模板方法,在基类中customize方法的次序是固定的,但我们也可以同过定制customize方法来满足我们的需求。image

适用性:(四人帮)

  1. 一次性实现一个算法的不变的部分,并将可变的行为留给子类来实现
  2. 各子类中公共的行为应被提取出来并集中到一个公共父类中以避免代码重复
  3. 控制子类扩展。模板方法只在特定点调用“customize”操作,这样就只允许在这些点进行扩展