• 基于设计模式的学习之旅模板方法模式(附源码)


              基于设计模式的学习之旅-----模板方法模式

    1、初识模板方法模式

    经常用单元测试的人会知道,在继承TestCase的测试类中有两个方法,一个是setUp,一个是tearDown。在运行test方法的时候总会先执行setUp,然后在执行test,最后总会执行tearDown

    这其实就是TestCase类定义好的顶级框架顺序。也是模版方法设计模式的体现。

    2什么是模板方法模式

    定义一个操作中的算法的骨架,而将一些步骤延迟到子类中。 Te m p l a t e M e t h o d使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。

    子类可以置换掉父类的可变部分,但是子类却不可以改变模板方法所代表的顶级逻辑

    3、模式结构图

    4、模式代码事例

    场景:考虑一个计算存款利息的例子。假设系统需要支持两种存款账号,即活期存款(current account)账号和定期存款(time Deposite)账号。这两种账号的存款利息是不同的,因此,在计算一个存户的存款利息额时,必须区分两种不同的账号类型。

    41涉及到的类,以及类图

    AbstractAccountCurrentAccountTimeAccount

    42具体的代码实现

    AbstractAccount

    CurrentAccount

    TimeAccount

    43事例输出结果

    5、模式参与者

    A b s t r a c t C l a s s(抽象类,如AbstractAccount

    C o n c r e t e C l a s s(具体类,如CurrentAccountTimeAccount

    6模式优缺点

         A、把不变的行为搬到超类,去除子类中重复的代码来体现他的优势。

    7模式适用性

    A一次性实现一个算法的不变的部分,并将可变的行为留给子类来实现。

    B各子类中公共的行为应被提取出来并集中到一个公共父类中以避免代码重复。

    C控制子类扩展。

    点击下载“文档以及源码下载

    欢迎转载,请注明出处“http://www.cnblogs.com/luxiaofeng54/archive/2013/04/12/3017192.html

  • 相关阅读:
    Python一些常用模块
    八、线程和进程
    七、Selenium与phantomJS----------动态页面模拟点击、网站模拟登录
    一、scrapy的下载安装---Windows(安装软件太让我伤心了)
    六、BeautifulSoup4------自动登录网站(手动版)
    五、XML与xpath--------------爬取美女图片
    四、正则表达式re模块
    三、Requests库的使用
    二、urllib进阶
    一、爬虫的基本体系和urllib的基本使用
  • 原文地址:https://www.cnblogs.com/luxiaofeng54/p/3017192.html
Copyright © 2020-2023  润新知