java匿名内部类的使用场景(2)计算机等级考试

文章作者 100test 发表时间 2010:01:01 12:29:03
来源 100Test.Com百考试题网


  这样,一个模板类就完成了。我们也通过这个模板类将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


相关文章


struts2中一个form多个提交的方法计算机等级考试
java多线程之wait(),notify(),notifyAll()计算机等级考试
Java常用异常与集合计算机等级考试
Java对象的强引用、软引用、弱引用和虚引用计算机等级考试
java匿名内部类的使用场景(2)计算机等级考试
java匿名内部类的使用场景(1)计算机等级考试
在Java中调用Perl脚本计算机等级考试
java多线程控制台聊天室计算机等级考试
java多线程按顺序读数据计算机等级考试
澳大利亚华人论坛
考好网
日本华人论坛
华人移民留学论坛
英国华人论坛