重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
小编给大家分享一下Java如何实现Template,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!
在成都做网站、网站设计、外贸营销网站建设过程中,需要针对客户的行业特点、产品特性、目标受众和市场情况进行定位分析,以确定网站的风格、色彩、版式、交互等方面的设计方向。成都创新互联公司还需要根据客户的需求进行功能模块的开发和设计,包括内容管理、前台展示、用户权限管理、数据统计和安全保护等功能。前言:
我们在开发中有很多固定的流程,这些流程有很多步凑是固定的,比如JDBC中获取连接,关闭连接这些流程是固定不变的,变动的只有设置参数,解析结果集这些是根据不同的实体对象“来做调整”,针对这种拥有固定算法流程,其中有固定的步凑,存在不固定的步凑的情况下就诞生了模板方法模式。
模板方法模式(Template)定义:
模板方法模式又叫模板模式,指的是父类定义了一个多步凑的算法骨架,其中很多步凑是在父类中实现了的,有的步凑是根据不同的子类拥有不同的实现,就把这些“不确定”的实现步凑定义为抽象方法交给子类去实现。模板模式的核心就是在使子类不改变算法结构的情况下,重新定义算法的某些步凑。属于行为型设计模式。应用很广发,比如Mybatis中的BaseExecutor;Spring中的JdbcTemplate;Spring集成Hibernate中的HibernateTemplate,Spring集成各种Mq的Template,还有MongodbTemplate等......
模式中的角色:
抽象类(AbstractClass):实现了模板方法,定义了算法的骨架。
具体类 (Concrete):实现了抽象类中抽象放,使得父类定义的算法更完整。
代码实现:
1:用抽象类定义流程,比如我们每天上班有个流程: 开机-->写代码(不同的程序员可能写不同的代码-->关机; 整个流程中开机和关机是相同的,只是写代码这个步凑不同,java程序员写java代码,Php程序员写Php代码; 我们先用一个抽象的父类定义这个流程:
public abstract class Work { //定义算法步凑流程 public void workDay(){ //1:上班开机 openComputer(); //2:搬砖:写代码 coding(); //3:下班关机 closeComputer(); } //开机 private final void openComputer() { System.out.println("到达公司,开机"); } //写代码 protected abstract void coding(); //关机 private final void closeComputer() { System.out.println("下班,关机"); } }
2:具体实现
Java程序员
public class JavaProgrammer extends Work { @Override protected void coding() { System.out.println("Java程序员打开Idea,写Java代码。。。"); } }
PHP程序员
public class PhpProgrammer extends Work { @Override protected void coding() { System.out.println("PHP程序员打开Zend Studio,写Php代码。。。"); } }
3:使用
public class TemplateMethodDemo { public static void main(String[] args) { Work javaProgrammer = new JavaProgrammer(); javaProgrammer.workDay(); System.out.println("================"); Work phpProgrammer = new PhpProgrammer(); phpProgrammer.workDay(); } }
运行结果
模板模式在源码中的体现:
1:我们每天都在使用的HttpServlet里面的service方法,service方法里面定义了调用流程,根据客户端调用的不同方式,if else逻辑判断调用不同的方法,比如doGet,doPost,doDelete等实现restful调用,具体的doGet,doPost方法实现我们可以在我们自己定义的Servlet中进行重写。
2:Mybatis框架中也有一些经典实用,比如BaseExecutor类,它是一个基础的SQL执行类,实现了大部分SQL的执行逻辑,然后把几个方法教给子类定制化完成,源码如下:
其中doUpdate(),doFlushStatements(),doQuery(),doQueryCursor()等方法都是由子类来实现的,BaseExecutor有那些子类呢?我们来看一下他的类图:
我们可以去看看具体每个子类的不同的实现。
模板模式的优缺点:
优点:
1:利用模板模式可以将相同处理逻辑的代码放到抽象父类中,提高了代码的复用性。
2:将不同的逻辑放到不同的子类中,通过子类的扩展增加新的行为,提高了代码的扩展性。
3:把不变的行为写在父类中,去除了子类的重复代码,提供了一个很好的代码复用平台,符合开闭原则。
4:公司的高级工程师或者架构师在项目前期可以利用模板模式定义好流程,让其他编码功工程师去实现具体。
缺点:
1:每个抽象类都需要至少一个子类来实现,导致了类数量的增加。
2:类数量增加间接增加了系统的复杂性。
3:因为继承关系的自身缺点,如果父类添加一个新的抽象方法,素有子类都要实现一遍。
以上是“Java如何实现Template”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注创新互联网站建设公司行业资讯频道!
另外有需要云服务器可以了解下创新互联建站www.cdcxhl.com,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。