`
随枫霏
  • 浏览: 134268 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

设计模式应用场景案例分析——模板方法

阅读更多

2. 模板方法


2.1 模板方法的定义

模板方法模式可以在一个方法中定义一个算法的骨架,而将具体的实现步骤延迟到子类中去实现。这样,可以在不改变算法结构的基础上,重新定义算法的步骤。具体的类图如下图所示。


AbstractClass是一个抽象类,templateMethod()是一个普通的方法,其余2个方法primitiveOperation1(),primitiveOperation2()是2个抽象方法,在templateMethod()的实现中规划好了primitiveOperation1()和primitiveOperation2()的调用顺序,以及具体的返回值形式等内容,ConcreteClass是一个AbstractClass的实现类,它必须实现primitiveOperation1()和primitiveOperation2()方法,这样,不同的子类就会不同的primitiveOperation1()和primitiveOperation2()的实现。

2.2 模板方法举例
Java IO InputStream
     JDK自带的很多工具类都运用了某些设计模式,其中JavaIO中的InputStream这个抽象类中有3个实现了相类似功能的度read()方法。
  • 第一个read()方法指定每次只读取1个字节
  • 第二个read()方法指定将读取的二进制数据放在字节数组b中
  • 第三个read()方法执行将读取的len个字节,放在字节数组b以off偏移量的起始位置处
通过方法签名可以看到,第一个read()方法是abstract的,其余2个都是普通方法。我们进入InputStream类的实现可以看到,第二个read()方法直接调用第三个read()方法

而第三个read()方法其实是一个“算法的骨架”,在这个方法里面实现了读取数据进入字节数组的步骤,但是真正的读取操作,调用的是抽象的read()方法,不同的输入流有不同的读取一个字节的read()方法实现


  • 大小: 92.6 KB
  • 大小: 6.5 KB
  • 大小: 3.1 KB
  • 大小: 18.4 KB
分享到:
评论

相关推荐

    Java性能调优实战——覆盖80%以上的Java应用调优场景

    开篇词讲怎样才能做好性能调优02讲如何制定性能调优策略04讲...索引的失效与优化36讲什么时候需要分表分库37讲电商系统表设计优化案例分析39讲答疑课堂:MySQL中InnoDB的知识点串讲加餐讲推荐几款常用的性能测试工具

    性能测试进阶指南——LoadRunner11实战 part2

    《测试实践丛书:性能测试进阶指南·LoadRunner 11实战》结合了很多工作中的实际案例,图文并茂,既适合渴望了解性能测试的新人,也适合对性能测试有一定认识和经验的中、高级测试工程师。同时,《测试实践丛书:...

    性能测试进阶指南——LoadRunner11实战 part1

    《测试实践丛书:性能测试进阶指南·LoadRunner 11实战》结合了很多工作中的实际案例,图文并茂,既适合渴望了解性能测试的新人,也适合对性能测试有一定认识和经验的中、高级测试工程师。同时,《测试实践丛书:...

    性能测试进阶指南——LoadRunner11实战_(完整)扫描版_@vs.part1

    4.1 设计场景 4.1.1 新建场景 4.1.2 负载生成器管理 4.1.3 用户管理 4.1.4 运行设置 4.1.5 IP虚拟 4.1.6 场景运行原理 4.1.7 Service Level Agreement(服务品质保障) 4.2 系统监控 4.2.1 Scenario Groups...

    性能测试进阶指南——LoadRunner11实战_(完整)扫描版_@vs.part2

    4.1 设计场景 4.1.1 新建场景 4.1.2 负载生成器管理 4.1.3 用户管理 4.1.4 运行设置 4.1.5 IP虚拟 4.1.6 场景运行原理 4.1.7 Service Level Agreement(服务品质保障) 4.2 系统监控 4.2.1 Scenario Groups...

    性能测试进阶指南——LoadRunner11实战_(完整)扫描版_@vs.part5

    4.1 设计场景 4.1.1 新建场景 4.1.2 负载生成器管理 4.1.3 用户管理 4.1.4 运行设置 4.1.5 IP虚拟 4.1.6 场景运行原理 4.1.7 Service Level Agreement(服务品质保障) 4.2 系统监控 4.2.1 Scenario Groups...

    性能测试进阶指南——LoadRunner11实战_(完整)扫描版_@vs.part4

    4.1 设计场景 4.1.1 新建场景 4.1.2 负载生成器管理 4.1.3 用户管理 4.1.4 运行设置 4.1.5 IP虚拟 4.1.6 场景运行原理 4.1.7 Service Level Agreement(服务品质保障) 4.2 系统监控 4.2.1 Scenario Groups...

    性能测试进阶指南——LoadRunner11实战_(完整)扫描版_@vs.part6

    4.1 设计场景 4.1.1 新建场景 4.1.2 负载生成器管理 4.1.3 用户管理 4.1.4 运行设置 4.1.5 IP虚拟 4.1.6 场景运行原理 4.1.7 Service Level Agreement(服务品质保障) 4.2 系统监控 4.2.1 Scenario Groups...

    性能测试进阶指南——LoadRunner11实战_(完整)扫描版_@vs.part3

    4.1 设计场景 4.1.1 新建场景 4.1.2 负载生成器管理 4.1.3 用户管理 4.1.4 运行设置 4.1.5 IP虚拟 4.1.6 场景运行原理 4.1.7 Service Level Agreement(服务品质保障) 4.2 系统监控 4.2.1 Scenario Groups...

    《iOS6开发指南》精彩书摘

    第20章“重构MyNotes应用——iOS网络通信中的设计模式与架构设计”。通过对MyNotes应用重构,把MyNotes应用的数据由原来的本地存储变成云存储。在这个过程中我们介绍了移动网络通讯应用的分层架构设计必要性和重要性...

    性能测试进阶指南——LoadRunner11实战 part3

    《测试实践丛书:性能测试进阶指南·LoadRunner 11实战》结合了很多工作中的实际案例,图文并茂,既适合渴望了解性能测试的新人,也适合对性能测试有一定认识和经验的中、高级测试工程师。同时,《测试实践丛书:...

    开涛高可用高并发-亿级流量核心技术

    15.1 应用场景 295 15.2 缓冲队列 296 15.3 任务队列 297 15.4 消息队列 297 15.5 请求队列 299 15.6 数据总线队列 300 15.7 混合队列 301 15.8 其他队列 302 15.9 Disruptor+Redis队列 303 15.9.1 简介 303 15.9.2 ...

    SQL Server 2008商业智能完美解决方案 3/3

    利用Microsoft SQL Server 2008实现灵活的商业智能解决方案使用Microsoft 完善的BI工具构建B0解决方案的必备指南,使用SQLServer 2008设计、开发和部署更有效的数据集成、报表、分析解决方案所需的权威操作指南。...

    SQL Server 2008商业智能完美解决方案 1/3

    利用Microsoft SQL Server 2008实现灵活的商业智能解决方案使用Microsoft 完善的BI工具构建B0解决方案的必备指南,使用SQLServer 2008设计、开发和部署更有效的数据集成、报表、分析解决方案所需的权威操作指南。...

    SQL Server 2008商业智能完美解决方案 2/3

    利用Microsoft SQL Server 2008实现灵活的商业智能解决方案使用Microsoft 完善的BI工具构建B0解决方案的必备指南,使用SQLServer 2008设计、开发和部署更有效的数据集成、报表、分析解决方案所需的权威操作指南。...

    SQL Server 2008 商业智能完美解决方案(3)

    利用Microsoft SQL Server 2008实现灵活的商业智能解决方案使用Microsoft 完善的BI工具构建B0解决方案的必备指南,使用SQLServer 2008设计、开发和部署更有效的数据集成、报表、分析解决方案所需的权威操作指南。...

Global site tag (gtag.js) - Google Analytics