java 钩子函数_java设计模式之------模板方法模式(钩子函数或回调函数)

package com.pattern.templatemethod;

/**

* 模板方法模式:也称钩子函数或回调方法,

* 定义为抽象类,让子类继承之后必须实现类中的抽象方法,

* 当不同的类去继承的时候,可以实现不同的方法。

* 便于新增子流程

* @author dgw

*

*/

@SuppressWarnings("all")

public abstract class Templatemethod {

private void openSession(){

System.out.println("开启回话");

}

/**

* 定义为抽象方法,子类必须实现

*/

protected abstract void move();

//提交事务

private void commitTransaction(){

System.out.println("提交事务");

}

//回调函数,可以先占着这个位置,具体需要的时候,子类可以调用。在回调里面处理些问题

public void callBack(){

System.out.println("回调函数");

}

/**

* 调用

*/

public final void call(){

this.openSession();

this.move();

this.commitTransaction();

this.callBack();

}

}

/**

* 子类

*/

class Children extends Templatemethod{

@Override

protected void move() {

System.out.println("反问数据库");

}

}

class Test{

public static void main(String[] args) {

Templatemethod templatemethod = new Children();

templatemethod.call();

//开启回话

//反问数据库

//提交事务

// 回调函数

//匿名内部类的方式调用

Templatemethod templatemethod2 = new Templatemethod() {

@Override

protected void move() {

//新增子流程:大神感觉反问数据库的方式太low,想手写数据库连接

System.out.println("大神教你手写jdbc");

System.out.println("反问数据库");

}

//重写回调函数 ,实现不同功能

@Override

public void callBack() {

System.out.println("执行回调函数,实现不同功能");

}

};

templatemethod2.call();

//开启回话

//大神教你手写jdbc

//反问数据库

//提交事务

//执行回调函数,实现不同功能

}

}

你可能感兴趣的:(java,钩子函数)