1.定义

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

2.理解

提到模板,我们大家都很熟悉,说白了它就是一个骨架或者样式,只需要我们去填充内容就可以了。把这种思想散发到编程中,就是我们的模板方法模式。

3.举例

老师给学生出考试题,老师先要把考题写在黑板上然后学生抄下来才能答题,相信大家都这样考试过。很显然这种方式效率很低,本来考试一个小时内就可以完成,现在抄题就要花费半个小时,班里每个学生都花费半个小时抄题会造成多少时间的浪费啊!凡是有点良心的老师就会把试题提前整理成模板,每人打印一份,学生只需要在空白处写答案就可以了,这样既能提高效率又能保证大家的题目不会抄错,何乐而不为呢?

 //试卷模板class TestPaper{public void TestQuestion1()//试题1{Console.WriteLine("杨过得到,后来给了郭靖,练成倚天剑、屠龙刀的玄铁可能是[] a.球墨铸铁 b.马口铁 c.高速合金铁 d.碳素纤维");Console.WriteLine("答案:" + Answer1());//虚方法}public void TestQuestion2()//试题2{Console.WriteLine("杨过、程英、陆无双铲除了情花,造成[] a.是这种植物不在害人 b.是一种珍稀物种灭绝 c.破坏了那个生物圈的生态平衡 d.造成了该地区沙漠化"); Console.WriteLine("答案:" + Answer2());}public void TestQuestion3()//试题3{Console.WriteLine("蓝凤凰致使华山师徒、桃谷六仙呕吐不止,如果你是大夫,去给他们开什么药[] a.阿司匹林 b.牛黄解毒片 c.氟哌酸 d.让他们喝大量的生牛奶 e.以上全不对");Console.WriteLine("答案:" + Answer3());}protected virtual string Answer1()//试题1答题卡{return "";}protected virtual string Answer2()//试题2答题卡{return "";}protected virtual string Answer3()//试题3答题卡{return "";}}
 //学生甲的试卷class TestPaperA:TestPaper{protected override string Answer1(){return "b";//考生答案}protected override string Answer2(){return "c";//考生答案}protected override string Answer3(){return "a";//考生答案}}//学生乙的试卷class TestPaperB : TestPaper{protected override string Answer1(){return "c";//考生答案}protected override string Answer2(){return "a";//考生答案}protected override string Answer3(){return "a";//考生答案}}
static void Main(string[] args){Console.WriteLine("学生A抄的试卷:");TestPaper studentA = new TestPaperA();studentA.TestQuestion1();//考生A的试题1答案studentA.TestQuestion2();//考生A的试题2答案studentA.TestQuestion3();//考生A的试题3答案Console.WriteLine("学生B抄的试卷:");TestPaper studentB = new TestPaperB();studentB.TestQuestion1();//考生B的试题1答案studentB.TestQuestion2();//考生B的试题2答案studentB.TestQuestion3();//考生B的试题3答案Console.Read();}

4.特点

模板方法模式是通过把不变的行为搬移到超类,去除子类中的重复代码来体现它的优势。当不变的和可变的行为在方法的子类实现中混合在一起的时候,不变的行为就会在子类中重复出现。通过方法模式把这些行为搬移到单一的地方,这样就帮助子类摆脱重复的不变行为的纠缠,为我们提供了很好的代码复用平台。

磨刀不误砍柴工——模板方法模式相关推荐

  1. linux 测试端口连通性_磨刀不误砍柴工,带你搞定云网络系统性能测试

    磨刀不误砍柴工,带你搞定云网络系统性能测试 一.前言 在部署或管理网络系统时,我们更多的是关心网络的连通性,而对于其整体的性能往往考虑不多,或者即使考虑到性能.异常或稳定性的问题,但却发现没有合适的手 ...

  2. 磨刀不误砍柴工——数据准备的过程与实践

      众所周知,我们常用"磨刀不误砍柴工"来比喻要办成一件事,不一定要立即着手干活,而是先要进行一些筹划和安排,充分做好准备工作,创造出有利条件,这样不但不会浪费时间,反而会大大提高 ...

  3. 磨刀不误砍柴工-----为提升自己找到一个平衡点

    作为一名软件开发人员,你该如何磨快你的锯子? "磨锯子"实际上是一个代名词,泛指一切编程以外的活动(不必编写代码),而这些活动(理论上来说)能使你成为一名更出色的程序员.这个词源自 ...

  4. [浪风分享]很简单的查看电脑所支持的最大内存的方法--磨刀不误砍柴工

    硬件+操作系统====决定支持的最大内存 在开始---运行处输入cmd(或者按住winkdy+R键输入CMD),打开命令窗口,输入wmic memphysical get maxcapacity然后回 ...

  5. 制作短视频需注意的三个要点,做好计划再制作,磨刀不误砍柴工

    制作短视频需注意的三个要点,做好计划再制作,磨刀不误砍柴工 俗话说得好,磨刀不误砍柴工,做短视频也是如此.我们在制作短视频之前,还应当注意到三个要点,并做好准备,只有提前做好了制作短视频的准备,我们才 ...

  6. 磨刀不误砍柴工 —— 自己动手写操作系统 入门导引

    磨刀不误砍柴工 刺猬@http://blog.csdn.net/littlehedgehog <自己动手写操作系统>其实阅读所需要的前提不过只是C和汇编了,里面涉及到很多操作系统的东西.于 ...

  7. 磨刀不误砍柴工 ——《自己动手写操作系统》入门导引

    磨刀不误砍柴工 刺猬@http://blog.csdn.net/littlehedgehog <自己动手写操作系统>其实阅读所需要的前提不过只是C和汇编了,里面涉及到很多操作系统的东西.于 ...

  8. #第3篇分享:python基础语法-磨刀不误砍柴工

    #python基础语法 无论学习什么语言,我们最初都要学习这门语言的基础语法及一些基本定义,下图基本涵盖了python学习所有的基础知识,下面我就详细来说上一说,说的不好您见谅: 1.首先介绍一下数据 ...

  9. 磨刀不误砍柴工,带你搞定云网络系统性能测试

    一.前言 在部署或管理网络系统时,我们更多的是关心网络的连通性,而对于其整体的性能往往考虑不多,或者即使考虑到性能.异常或稳定性的问题,但却发现没有合适的手段去测试或监控网络健康状况.在本文中,首先简 ...

  10. 磨刀不误砍柴工!vs2010快捷键大全

    最常用的快捷键: VS2012变化的快捷键: 注释::VS2010是(Ctrl+E,C),VS2012是(Ctrl+K, Ctrl+C),实际操作,按住Ctrl键不放,先按K键,再按C键.相当于Ctr ...

最新文章

  1. 一次检验自己技术和耐力的碎片提取经历
  2. C# 线程手册 第五章 扩展多线程应用程序 系列
  3. nssl1446-小智的旅行【dp】
  4. ABAP术语-World Wide Web
  5. 创建一个Windows Service应用程序
  6. python之禅星号_那些用起来很爽,但用不好可能会被人打的Python骚操作
  7. NFS在Centos 6.3下的安装
  8. AirDisk HDD
  9. 【ps-course】layer 图层
  10. python判断word页码
  11. 【历史上的今天】9 月 13 日:计算机先驱诞生日;第一台装载硬盘的超级计算机;《超级马里奥兄弟》发布
  12. 数字信号处理第一课(转)
  13. 使用QSS美化PyQt5界面,分享4套超赞皮肤和QSS专用编辑器!
  14. PC按键精灵读取txt文本出现乱码怎么办?按键精灵手机助手读取txt文本中文变问号怎么办?
  15. 几种典型的立体匹配算法
  16. IT 外包中的甲方乙方,德国人,美国人,印度人和日本人印象杂谈
  17. def demo什么意思python_Python之Turtle库Demo案例
  18. 求一圈中留下的最后一个人
  19. 基于飞桨实现项目1 车牌识别
  20. 就Java开发的Linux环境,进行完整版的安装,多适用于小白

热门文章

  1. 如何写论文摘要和引言
  2. blast2go mysql_blast2go_blast2go中文使用说明_blast2GO
  3. 4.1%的利率,100万贷款,30年还款,我们每月能少还多少房贷呢
  4. android局域网中的打印机,Android 浅谈同一局域网下使用WiFi连接打印机
  5. 提高信息技术课堂教学实效研究 课题论证报告
  6. 优动漫PAINT画面上色技巧——渐变映射
  7. win10专业版如何快速恢复出厂设置的方法
  8. 按键精灵连接远程mysql_按键精灵手机版 如何连接远程网络数据库 进行读写操作...
  9. QPS 与 TPS是什么
  10. 《七哥说道》第八章:约在410,北漂可还行?