美文网首页设计模式@IT·互联网
常用开源框架中设计模式使用分析- 模板设计模式(Template

常用开源框架中设计模式使用分析- 模板设计模式(Template

作者: 阿里加多 | 来源:发表于2017-05-26 07:53 被阅读97次

    十一、模板设计模式(Template Pattern)

    11.1 前言

    模板设计模式是一种行为设计模式,它使用一个抽象类定义了一个模板,这个模板里面定义了一系列的接口,子类则只需要继承该抽象类并且根据需要重写一部分接口。

    阿里巴巴长期招聘Java研发工程师p6,p7,p8等上不封顶级别,有意向的可以发简历给我,注明想去的部门和工作地点:1064454834@qq.com_

    11.2 ibatis2中AbstractDAOTemplate

    image.png

    如图AbstractDAOTemplate是抽象模板类,里面定义了configure方法,configure方法里面定义了好多protected方法,其中就有些是抽象方法。类SpringDAOTemplate,IbatisDAOTemplate,GenericCIDAOTemplate,GenericSIDAOTemplate则继承了AbstractDAOTemplate类并重写了一部分方法。

    11.3 Tomcat中Digester里面的Rule

    tomcat中的Digester是为了解析server.xml的,其中每个元素都有一个解析规则就是Rule ,类图如下:

    image.png

    如图:Rule是抽象类,对于每个解析的节点来说Rule提供了解析所需所有的方法,而他的子类则根据自己的特殊性重写一部分方法来支持自己的特性。

    11.4 Tomcat中Endpoint

    image.png

    如图AbstractEndpoint是个抽象类,定义了Endpoint的所有接口,然后JIoEndpoint继承了该类并且重写了一部分重要的方法实现了BIO方式endpoint,NioEndpoint则重写了方法实现了NIO的endpoint.

    11.5使用场景

    • 当多个子类具有共同的操作流程逻辑,并且其中某些流程节点操作需要自己定制化时候。

    欢迎关注微信公众号:技术原始积累 获取更多技术干货

    image.png

    相关文章

      网友评论

      • JetWang:感觉笔者还是没有理解到模板方法的精髓,记得看过Head First Pattern中有过介绍,所谓模块,所有的子类中有类似相同的流程(安装某种顺序执行),且只有其中的某些部分不太相同,这种不同的留给子类实现,基本的操作流程父类就搞定了。上面的例子感觉还不是很明显的体现模板方法!比如HttpServlet ,GenericServlet这个类作为例子就不错了,init初始化留给下面做模板,doGet,doPost通过 protected void service(HttpServletRequest req, HttpServletResponse resp),进行模板抽象给子类去实现自己想要实现的方法,父类有公共判断当前请求的是Get还是Post的处理逻辑
        阿里加多::worried: ,本文讲的就是这样那,只是用的例子不一样,你深入到本文这俩例子的源码去看看就知道了

      本文标题:常用开源框架中设计模式使用分析- 模板设计模式(Template

      本文链接:https://www.haomeiwen.com/subject/ziynxxtx.html