Template Method Pattern(模版方法模式)定义:定义一个操作中方法的骨架,以将一些步骤延缓到子类中实现,模版方法让子类重新定义一个方法的某些步骤而无须改变方法的结构。
其中类与对象的关系为:
AbstractClass:抽象类
定义一个抽象原始的操作,其子类可以重定义他的实现
ConcreteClass:具体子类
实现原始的操作以完成子类特定方法的步骤
下面就是一个简单的例子(模仿Spring封装Hibernate 的try catch):
AbstractClass:抽象类
import org.hibernate.Session;
public interface MyHibernateCallback {
public void doInHibernate(Session s);
}
ConcreteClass:具体子类
import org.hibernate.Session;
/**
* 这是一个模版,模仿Spring封装Hibernate 的try catch
* @author Administrator
*
*/
public class MyHibernateTemplate {
//传一个接口
public void executeWithNativeSession(MyHibernateCallback callback){
Session s = null;
try{
s = getSession();
s.beginTransaction();
//执行接口的方法,这样那个类要是实现了这个接口就得实现这方法就相当把这方法插到了此处
callback.doInHibernate(s);
s.getTransaction().commit();
}catch(Exception e){
s.beginTransaction().rollback();
}finally{
}
}
private Session getSession() {
return null;
}
//使用此模版
public void save(final Object o){
new MyHibernateTemplate().executeWithNativeSession(new MyHibernateCallback() {
@Override
public void doInHibernate(Session s) {
s.save(o);
}
});
}
}