设计模式六大原则(1):单一职责原则
设计模式六大原则(2):里氏替换原则
设计模式六大原则(3):依赖倒置原则
设计模式六大原则(4):接口隔离原则
设计模式六大原则(5):迪米特法则
设计模式六大原则(6):开闭原则

SingletonPattern,UML抽象图百度找,代码实现如下

使用单例模式设计一个可以创建数据库连接的类。

单例类

package jiwei;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
public final class jdbcUtils {
    private static String url="数据库URL";
    private static String user="用户名";
    private static String password="密码";
    //url:jdbc:子协议:子名称//[(当为本地时可省略)主机名:端口]/数据库名?属性名=属性值&...
    /**
     * @param args
     */
    private static Connection instance=null;
    private jdbcUtils(){               //不构造实例

    }
    static{                      //静态代码块只被执行一次(类被装载到虚拟机时被执行)
        try {
//          注册驱动
//          DriverManager.registerDriver(new com.mysql.jdbc.Driver());  //必须有架包存在
//          System.setProperty("jdbc.Driver", "com.mysql.jdbc.Driver");
            Class.forName("com.mysql.jdbc.Driver");    //最佳方式   无架包依然可以通过编译
        } catch (ClassNotFoundException e) {
            // TODO Auto-generated catch block
            throw new ExceptionInInitializerError(e);
        }
    }
    public static Connection getConnection() throws SQLException{
        if(instance==null){
                    instance = DriverManager.getConnection(url, user, pasword);
                    return instance;
                }else{
                    return instance;
                }
    }
    public static void free(ResultSet rs,Statement st,Connection conn){
        try {
            if (rs != null) {
                rs.close();
            }
        } catch (SQLException e) {
            e.printStackTrace();
        } finally {
            try {
                if (st != null) {
                    st.close();
                }
            } catch (SQLException e) {
                e.printStackTrace();
            } finally {
                try {
                    if (conn != null) {
                        myDataSource.free(conn);
                    }
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
        }
    }
}

别嫌弃我没写注释,这个代码很简单,注释省略,嘿嘿。

最新文章

  1. html5,加密元素
  2. 160809208沈昊辰c语言程序设计实验选择结构设计
  3. 节点操作js jQuery
  4. django开发个人简易Blog——数据模型
  5. B树和B+树
  6. PHP导出CSV UTF-8转GBK不乱码的解决办法
  7. factory工厂模式之简单工厂SimpleFactory
  8. JS动态广告浏览
  9. matrix_2015_1 138 - ZOJ Monthly, January 2015
  10. 浏览器判断及IE版本区分
  11. [swustoj 1095] 挖金子
  12. servlet的doPost 和doGet和web文件结构
  13. 限制窗口拉伸范围——WM_GETMINMAXINFO
  14. linux 安装Gauss09 GaussView
  15. win8系统不小心禁用了管理员权限怎么解决
  16. [android游戏开发初学]SurfaceView初探之缓冲区测试
  17. 关于WPF的验证
  18. 【转】探讨:ASP.NET技术的学习顺序问题
  19. Jupyter ~ 像写文章般的 Coding (附:同一个ipynb文件,执行多语言代码)
  20. web html 在线调试工具

热门文章

  1. auto_ptr类
  2. MFC获得当前应用程序目录的GetCurrentDirectory()和GetModuleFileName()函数
  3. Image Pyramid
  4. sklearn_算法选择
  5. Django ImageField 上传图片并保存到数据库
  6. AtCoder Beginner Contest 087 B - Coins
  7. Python函数-eval()
  8. [调试日志]用php函数var_export把多维数组file_put_contents写入并打印到日志,以方便调试之多维数组,用php5中的var_export函数示例,顺带介绍http_build_query(转)
  9. BZOJ4358:permu
  10. Spring Boot自定义配置与加载