TOP

java匿名内部类的使用场景(2)
2014-11-18 01:35:47 】 浏览:9738
Tags:java 匿名 部类 使用 场景

  这样,一个模板类就完成了。我们也通过这个模板类将catch…finally…两段代码提出来了。我们来看看使用了这个模板类的数据层方法是怎么实现的:


  new DataTemplate().execute(new DataManager()


  {


  public void manageData()


  {


  String[] divisionData = null;


  conn = manager.getInstance().getConnection();


  stmt = (OracleCallableStatement)conn.prepareCall("{ Call PM_GET_PRODUCT.HEADER_DIVISION( , ) }");


  stmt.setLong(1 ,productId.longValue() );


  stmt.registerOutParameter(2, oracle.jdbc.OracleTypes.CURSOR); ;


  stmt.execute();


  ResultSet rs = stmt.getCursor(2);


  int i = 0 ;


  String strDivision = "";


  while( rs.next() )


  {


  strDivision += rs.getString("DIVISION_ID") + "," ;


  }


  int length = strDivision.length() ;


  if(length != 0 )


  {


  strDivision = strDivision.substring(0,length - 1);


  }


  divisionData = StringUtil.split(strDivision, ",") ;


  map.put("Division", strDivision ) ;


  LoggerAgent.debug("GetHeaderProcess","getDivisionData","getValue + " + strDivision +" " + productId) ;


  }


  });


  注意:本段代码仅供思路上的参考,没有经过上机测试。


  我们可以看到,正是这个实现了DataManager接口得匿名内部类的使用,才使得我们解决了对try…catch…finally…语句的改造。这样,第一为我们解决了令人痛苦的重复代码;第二也让我们在数据层方法的编码中,直接关注对数据的操作,不用关心那些必需的但是与数据操作无关的东西。


  我们现在来回想一下Spring框架的数据层,是不是正是使用了这种方法呢?


  场景之三:一些多算法场合


  假如我们有这样一个需求:我们的一个方法用来对数组排序并且依次打印各元素,对数组排序方法有很多种,用哪种方法排序交给用户自己确定。


  对于这样一个需求,我们很容易解决。我们决定给哪些排序算法定义一个接口,具体的算法实现由用户自己完成,只要求他实现我们的接口就行。


  public interface SortAlgor


  {


  public void sort(int[] is);


  }


  这样,我们再在方法里实现先排序后打印,代码如下:


  public void printSortedArray(int[] is,SortAlgor sa)


  {


  ……


  sa.sort(is);


  for(int i=0;i


  {


  System.out.print(is[i]+” “);


  }


  System.out.println();


  }



java匿名内部类的使用场景(2) https://www.cppentry.com/bencandy.php?fid=81&id=12905

】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇java匿名内部类的使用场景(1) 下一篇计算机二级辅导:java类装载(3)