C++单例模式
单例模式:自始至终都只能有一个chenxuhu实例,不能再new出另一个实例,共用同一个实例。
- C++单例模式
#define _CRT_SECURE_NO_WARNINGS
#include<iostream>
using namespace std;
//创建个人类,比如我的名字,chenxuhu
class ChenXuHu
{
public:
static ChenXuHu * getInstance()
{
return singleMan;
}
private:
static ChenXuHu * singleMan;
ChenXuHu(){}
//拷贝构造 私有化
ChenXuHu(const ChenXuHu&cxh){}
};
//在类外面实现new
ChenXuHu * ChenXuHu::singleMan = new ChenXuHu;
void test()
{
ChenXuHu *a = ChenXuHu::getInstance();
ChenXuHu *b = ChenXuHu::getInstance();
//ChenXuHu *c = new ChenXuHu;构造函数私有化,不可以再new
if (a == b)
{
cout << "a 与 b相同" << endl;
}
else
{
cout << " a与 b不相同" << endl;
}
}
int main(){
test();
system("pause");
return EXIT_SUCCESS;
}
2.JAVA单例模式,链接数据库
package com.wulian.utils;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.SQLException;
public class JdbcUtil {
static JdbcUtil ju = null;
Connection connection;
private JdbcUtil() {
try {
Class.forName("com.mysql.jdbc.Driver");
String url = "jdbc:mysql://localhost:3306/javaweb?characterEncoding=utf8";
String name = "root";
String password = "123456";
connection = DriverManager.getConnection(url, name, password);
} catch (Exception e) {
e.printStackTrace();
}
}
public static JdbcUtil getInstace() {
if (ju == null) {
ju = new JdbcUtil();
}
return ju;
}
public Connection getConn() {
return connection;
}
public void setCloseConn(Connection conn) {
if (conn != null) {
try {
conn.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
public void setClosePs(PreparedStatement ps) {
if (ps != null) {
try {
ps.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}