Java模板模式(template)

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

模板模式

模板模式介绍

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

代码实现

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

/**
 * 父类
 * @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();
	}
}

测试类

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();
}

输出

取号排队
我要存钱!
反馈评分
---------------------------
取号排队
我要理财!我这里有2000万韩币
反馈评分

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

开发中常见的场景

  1. 数据库访问的封装
  2. Junit单元测试
  3. servlet中的doGet和doPost方法
  4. Hibernate中的模板程序
  5. Spring中的JdbcTemplate,HibernateTemplate等

你可能感兴趣的:(java,设计模式,模板模式,#,java设计模式)