java中的匿名类和回调函数

//Spring中这样写
     public Object execute(SqlSessionCallback callback) {

         SqlSession session = openSession();

         Object obj = callback.doInSqlSession(session);
         if (session != null)
             session.close();

         return obj;
     }  

public int delete(final String statement, final Object param) {
         //引用内部方法,参数是回调函数,回调函数负责资源管理,通过匿名内部类,可以使用本函参数。
         return (Integer) execute(new SqlSessionCallback() {

             public Object doInSqlSession(SqlSession session) {
                 if (param != null)
                     return session.delete(statement, param);
                 else
                     return session.delete(statement);
             }
         });
     }

其实是 a b c ,ac是重复代码,非重复的b部分通过回调函数,可以重用冗余代码。

本例中,可以节约很多释放资源的代码,而中间的业务部分委托回调函数去做(平时我自己写的代码类似的情况都没有这么处理,冗余代码很多,羞愧)


哎,不过反过来想想,这么写的确很不容易看懂。要是随便写写代码就要考虑这么多,很痛苦,所以,要慎重,最好是框架级的代码才这么干。


。。。。。。。哦,写代码的习惯。

你可能感兴趣的:(java,spring,C++,c,框架)