关于代码重用的感悟

关于代码重用的感悟

       在我们作项目时免不了碰到一些功能相同的代码,而这些代码若不加以管理便会使得程序变得十分臃肿,使程序的开发变得混乱,使后期的维护变得让人头晕眼花,所以做程序时注意代码重用性是很重要的!注意代码重用性不但可以使你在做程序时提高效率,而且可以将一些比较实用的代码有效的在其它项目中重新发挥作用!
     以下给出一段以连接数据库为例的代码,以讲述代码重用的重要性。

/*
 * 数据库连接工具类
 * 说明:DBToolsX-此工具类用于获取数据库连接与关闭数据库连接,关闭结果集等功能。
 * 无需实例化该工具类(DBToolsX),可直接调用此工具类(DBToolsX)的静态方法
 * 注意:1.使用前请导入相应适当的Jar文件
 *      2.注意更改为适用的加载数据库驱动
 *      3.注意更改为适用的数据库连接字符串(URL)
 *      4.注意更改为正确的数据库用户名(USER)和密码(PWD)
 *      5.请注意检查加载数据库驱动与数据库连接字符串(URL)是否合适,正确
 
*/

import  java.sql. * ;

public   class  DBToolsX 
{
 
//静态块:加载数据库驱动
 static
 
{
  
try 
  
{
   Class.forName(
"");
   
//加载SQlServer2000驱动-com.microsoft.jdbc.sqlserver.SQLServerDriver
   
//加载MySQL5.x驱动-com.mysql.jdbc.Driver
   
//加载Oracle9i驱动-oracle.jdbc.driver.OracleDriver
  }

  
catch (ClassNotFoundException e) 
  
{
   e.printStackTrace();
  }

 }


 
//禁止实例化
 private DBToolsX(){}
 
 
//获取连接方法
 public synchronized static Connection getConnection()
 
{
  Connection con
=null;
  
try 
  
{
   con
=DriverManager.getConnection(URL,USER,PWD);
  }
 
  
catch (SQLException e)
  
{
   e.printStackTrace();
  }

  
return con;
 }

 
 
//关闭ResultSet方法
 public static void closeResultSet(ResultSet rs)
 
{
  
try 
  
{
   
if(rs!=null)
    rs.close();
  }
 
  
catch (SQLException e) 
  
{
   e.printStackTrace();
  }

 }

 
 
//关闭Statement方法
 public static void closeStatement(Statement stmt)
 
{
  
try 
  
{
   
if(stmt!=null)
    stmt.close();
  }
 
  
catch (SQLException e) 
  
{
   e.printStackTrace();
  }

 }

 
 
//关闭本次连接方法
 public static void closeConnection(Connection con)
 
{
  
try 
  
{
   
if(con!=null)
    con.close();
  }
 
  
catch (SQLException e) 
  
{
   e.printStackTrace();
  }

 }

 
 
//数据库连接字符串
 private static String URL="";
 
/*
   SQlServer2000的连接字符串:jdbc:microsoft:sqlserver://127.0.0.1:1433;DatabaseName=pubs
   MySQL5.x的连接字符串:jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=gb2312
   Oracle9i(thin)<无需WEB服务器端安装Oracle客户端>的连接字符串:jdbc:oracle:thin:@127.0.0.1:1521:TEMPDB
   Oracle9i(oci)的连接字符串:jdbc:oracle:oci8:@TEMPDB
 
*/

 
//数据库用户名
 private static String USER="";
 
//测试常用用户名:SQLServer2000-sa,MySQL5.x-root,Oracle9i-scott
 
//数据库密码
 private static String PWD="";
 
//测试常用密码:SQLServer2000-sa/空密码,MySQL5.x-root/a,Oracle9i-tiger
}


  以上这个工具类是用来做数据库操作的(要注意注释,注释也是做程序开发时很重要的部分),即使上面的说明注释已经解释过如何使用这个工具类,我还是要用一段代码来解释一下如何使用这个工具类。

代码如下:

  

// DBToolsX工具类的应用示范:
import  java.sql.Connection;
import  java.sql.PreparedStatement;
import  java.sql.ResultSet;
import  java.sql.SQLException;
import  com.xuan.vo.UserInfo;

// 以一个验证用户登录的实例解释DBToolsX工具类的使用
// 这里就不给出UserInfo的JavaBean了
public   class  UserInfoDAO
{
     
//构造方法(这里的构造方法须传入一个Connection对象,
//而这个Connection对象可以在实例化UserInfoDAO时用
//DBToolsX.getConnection()来获取并传入:new UserInfoDAO(DBToolsX.getConnection())
 public UserInfoDAO(Connection conn)
 
{
  
this.conn=conn;
 }


 
//判断用户登录条件方法
 public boolean checkUser(UserInfo user)
 
{
  
try
  
{

   ps
=conn.prepareStatement("SELECT userid FROM UserInfo WHERE userid=? AND passwordchar=?");
   ps.setString(
1,user.getUserid());
   ps.setString(
2,user.getPasswordchar());
   rs
=ps.executeQuery();
   
if(rs.next())
   
{
    
return true;
   }

   
else
   
{
    
return false;
   }

  }

  
catch (SQLException e)
  
{
   e.printStackTrace();
  }

  
finally
  
{
// finally块十分重要,在连接被打开后必须在不用此连接时关闭连接以解省资源
   DBTools.closeResultSet(rs);     //关闭结果集rs
   DBTools.closeStatement(ps);    //关闭ps
   DBTools.closeConnection(conn); //关闭连接conn
  }

  
return false;
 }


 
private Connection conn=null;
 
private ResultSet rs=null;
 
private PreparedStatement ps=null;
}

 

      这样我们就做到了代码的重用(当然这个例子做得还可以更简便,不过在这里只为了讲述代码重用的意义,所以没再优化代码),我们不需要在每次对数据库进行操作时重新写DBToolsX.java中的代码了,不但节省了时间,提高了做程序的效率,而且程序不再臃肿,那些重复的代码也被“巧妙”的“隐藏”了,对修改和维护程序起到了作用,更好的是DBToolsX工具类在做其它程序时仅需稍加改动就可以发挥作用了!
     我们平时做程序时多注意代码重用性,对我们做程序是很有帮助的!
                        以上为本人拙见,还请各位高手多多指点!
                                                                                                                                                                                                                                                                     阿轩
                                                                                     AXuan_Good_GAME  

                                                                                           2008年4月 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值