模板方法模式

声明 本文内容属于《Head First 设计模式》阅读笔记,文中涉及到的知识案例等直接或间接来源于该书。《Head First 设计模式》通过有趣的图表+文字的形式,让人自然学习设计模式,非常棒推荐阅读

模板方法模式概念

        在一个方法中定义一个算法的骨架,而将一些步骤延迟到子类中。模板方法使得子类可以在不改变算法结构的情况下,重新定义算法中的某些步骤


案例(辅助理解)

情景说明

        现在有咖啡和茶这两种饮料。其中准备咖啡的步骤是①把水煮沸、②用沸水冲泡咖啡、③把咖啡倒进杯子、④加糖和牛奶;准备茶的步骤是①把水煮沸、②用沸水浸泡茶叶、③把咖啡茶倒进杯子、④加柠檬。

不使用模板方法的实现

  • 咖啡类:
    在这里插入图片描述
  • 茶类:
    在这里插入图片描述

使用模板方法的实现

说明 从情景说明中可以发现,不管是茶叶还是咖啡,它们的第①步、第③步几乎是一模一样的,可以抽取出来,放在父类中;第①步、第③步不同,那么可以将这两步交给具体的子类去实现。

  • 模板方法所在的抽象父类:
    在这里插入图片描述

  • 咖啡子类:
    在这里插入图片描述

  • 茶子类:
    在这里插入图片描述

  • 测试一下:

    1. 测试代码:
      在这里插入图片描述

    2. 运行main方法,控制台输出:
      在这里插入图片描述


模板方法的简单拓展(基于上面的案例)

        模板方法模式使用非常广,尤其是在架构走向方面。模板方法模式的变形也很多,有的容易被认出来,有的就需要对代码认知敏锐的开人人员才能快速认出来,所以很多时候我们在不知不觉间就使用了模板方法模式。下面基于上面的案例,简单拓展一下上面的模板方法
在这里插入图片描述


模板方法模式学习完毕 !


^_^ 如有不当之处,欢迎指正

^_^ 参考资料
        《Head First 设计模式》
Eric Freeman & Elisabeth Freeman with Kathy Sierra & Bert Bates著,O’Reilly Taiwan公司译,UMLChina改编

^_^ 测试代码托管链接
         https://github.com/JustryDeng…DesignPattern

^_^ 本文已经被收录进《程序员成长笔记(六)》,笔者JustryDeng

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章