前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Java模板模式(template)

Java模板模式(template)

作者头像
用户4919348
发布2019-04-02 11:05:16
2.2K0
发布2019-04-02 11:05:16
举报
文章被收录于专栏:波波烤鸭波波烤鸭

  java23中设计模式中的模板模式是我们经常在框架源码中能看到的设计模式,所以本文就给大家来介绍下模板模式

模板模式

模板模式介绍

  模板方法模式是编程中经常用得到的模式,它定义了一个操作中的算法核心,然后将某些步骤延迟到子类中实现。这样,新的子类可以在不改变一个算法结构的前提下重新定义该算法的某些特定的步骤。   换个说法就是某个流程的代码已经都具备了,但是其中某个节点的代码暂时不能确定,因此,我们采用模板方法模式,将这个节点的代码实现转移到子类中完成,即:处理步骤父类中定义好,具体的实现延迟到子类定义中。

代码实现

  我们通过银行办理业务,排队区号来操作来模拟模板模式。

代码语言:javascript
复制
/**
 * 父类
 * @author 波波烤鸭
 *
 */
public abstract class BankTemplateMethod {
	/**
	 * 具体方法
	 */
	public void takeNumber(){
		System.out.println("取号排队");
	}
	/**
	 * 办理具体的业务	钩子方法:抽象方法,交给子类去实现
	 */
	public abstract void transact(); 
	/**
	 * 具体方法
	 */
	public void evaluate(){
		System.out.println("反馈评分");
	}
	
	/**
	 * 模板方法!!!
	 */
	public final void process(){	
		this.takeNumber();

		this.transact();

		this.evaluate();
	}
}

测试类

代码语言:javascript
复制
public static void main(String[] args) {

	// 采用匿名内部类
	BankTemplateMethod btm1 = new BankTemplateMethod() {
		@Override
		public void transact() {
			System.out.println("我要存钱!");
		}
	};
	btm1.process();
	System.out.println("---------------------------");
	BankTemplateMethod btm2 = new BankTemplateMethod() {
		@Override
		public void transact() {
			System.out.println("我要理财!我这里有2000万韩币");
		}
	};
	btm2.process();
}

输出

代码语言:javascript
复制
取号排队
我要存钱!
反馈评分
---------------------------
取号排队
我要理财!我这里有2000万韩币
反馈评分

小结:银行为了方便顾客办理业务,所以制定了一套固定的业务流程。比如来了先取号排队,然后办理业务,然后评分。取号排队和评分这些功能银行可以实现,但是办理具体的业务就得具体的顾客来实现了。这就是模板模式。

开发中常见的场景

  1. 数据库访问的封装
  2. Junit单元测试
  3. servlet中的doGet和doPost方法
  4. Hibernate中的模板程序
  5. Spring中的JdbcTemplate,HibernateTemplate等
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2019年03月05日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 模板模式
    • 模板模式介绍
      • 代码实现
        • 开发中常见的场景
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档