SingletonPattern(23种设计模式之一)
2024-08-24 22:16:19
设计模式六大原则(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();
}
}
}
}
}
别嫌弃我没写注释,这个代码很简单,注释省略,嘿嘿。
最新文章
- html5,加密元素
- 160809208沈昊辰c语言程序设计实验选择结构设计
- 节点操作js jQuery
- django开发个人简易Blog——数据模型
- B树和B+树
- PHP导出CSV UTF-8转GBK不乱码的解决办法
- factory工厂模式之简单工厂SimpleFactory
- JS动态广告浏览
- matrix_2015_1 138 - ZOJ Monthly, January 2015
- 浏览器判断及IE版本区分
- [swustoj 1095] 挖金子
- servlet的doPost 和doGet和web文件结构
- 限制窗口拉伸范围——WM_GETMINMAXINFO
- linux 安装Gauss09 GaussView
- win8系统不小心禁用了管理员权限怎么解决
- [android游戏开发初学]SurfaceView初探之缓冲区测试
- 关于WPF的验证
- 【转】探讨:ASP.NET技术的学习顺序问题
- Jupyter ~ 像写文章般的 Coding (附:同一个ipynb文件,执行多语言代码)
- web html 在线调试工具
热门文章
- auto_ptr类
- MFC获得当前应用程序目录的GetCurrentDirectory()和GetModuleFileName()函数
- Image Pyramid
- sklearn_算法选择
- Django ImageField 上传图片并保存到数据库
- AtCoder Beginner Contest 087 B - Coins
- Python函数-eval()
- [调试日志]用php函数var_export把多维数组file_put_contents写入并打印到日志,以方便调试之多维数组,用php5中的var_export函数示例,顺带介绍http_build_query(转)
- BZOJ4358:permu
- Spring Boot自定义配置与加载