A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 执笔梦 金牌黑马   /  2014-8-29 09:38  /  794 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 执笔梦 于 2014-8-29 23:00 编辑

Template模式平时用挺多的,可能没有注意,记得学web的时候,代码重复得要死,比如连接数据库啊,偲放连接啊...等等,无聊并且没用,以前不会Template模式(现在也不太懂),其实没多大的作用,因为以后应该会是用到别人已经封装好的了,直接拿来用就行,不过可以理解,学习一下,别人是如何封装的。
/**Template模式:抽象类负责给出一个算法的轮廓和骨架,具体子类负责给出这个算法的各个逻辑步骤既具体子类负责填充这个轮廓和骨架,不同的子类有不同的填充方法;而将这些基本方法总汇起来的方法叫做模版方法,这个模板方法是在抽象类中以具体方法定义的
(这话和例子没什么关系....)
*/
public class MyHibernateTemplate{
       /*
          模版方法.模版固定的,但服务功能是各不同的,可以通过定义一个接口,来实现真的的服务.
      */       ,
        public Object executeWithDao(MyHibernateCallbackute action) throws Throwable{
                //session在这可以理解为与数据库打交道的对象
                Session s = null;
                //.....其它操作
                if(action == null){
                                throw new IllegalAccessError("Callbac object must not be null");
                }
                try{
                        //s = ......其它操作
                        Object obj = action.doInHibernate(s);
                        return obj;

                }catch(.... e){
                        //......throw e;
                }finally{
                   //偲放连接什么的
                        if(s != null){
                                //.....其它操作
                        }
                        //..其它操作
                }
        }
        /*
         * 比如存储一个用户.
         * */
        public void save(final Object obj) throws Throwable{
                executeWithDao(new MyHibernateCallbackute() {
                        @Override
                        public Object doInHibernate(Session s) {
                                return s.save(obj);
                        }
                });
        }
}



public interface MyHibernateCallbackute {
         Object doInHibernate(Session s);
}


有很多不足之处,说得不明白的地方谅解..如果觉得看得懂并且对你有帮助的,可以奖励点黑马币(其实这是我真的的目的,哈哈)..为什么要黑马币啊?(因为我想升级...)
如果觉得讲得不好,那就xxxx.................



0 个回复

您需要登录后才可以回帖 登录 | 加入黑马