文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
热门标签
php爱好者> php文档>Think in Python Design Pattern–Template Method

Think in Python Design Pattern–Template Method

时间:2011-05-27  来源:pyzend

前言:

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

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

 

先来看代码:

templateMethod.pyclass ApplicationFrameWork:
    def __init__ (self):
        self.__templateMethod()
    def __templateMethod (self):
            self.customize1()
            self.customize2()
            self.customize3()
    def customize3 (self):   #默认方法,可以不被改写
        print "customized method 3"
        

class MyApp(ApplicationFrameWork):
    def customize1 (self):
        print "customized method 1"
    def customize2 (self):
        print "customized method 2"
    

MyApp()

输出:

customized method 1
customized method 2
customized method 3

 

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

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

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

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

适用性:(四人帮)

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

找茬脑洞的世界安卓版

休闲益智 下载
滑板英雄跑酷2手游

滑板英雄跑酷2手游

休闲益智 下载
披萨对对看下载

披萨对对看下载

休闲益智 下载