자주 사용하는 기능 사용 시, 미리 메모리에 생성해놓고 사용.
메모리에 1개의 객체만 존재하게 한다.
싱글톤 클래스
public class SingletionTest {
public static void main(String[] args) {
System.out.println("첫 번째 getInstance() 호출");
//getInstance()로 MySingleton객체 생성
MySingleton a = MySingleton.getInstance();
//직접적으로 new 쓰면 오류남(생성자가 private이라서)
//MySingleton a = new MySingleton();
System.out.println("두 번째 getInstance() 호출");
MySingleton b = MySingleton.getInstance();
if(a==b) {
System.out.println("두 싱글톤은 동일한 객체입니다.");
}
}
}
싱글톤 사용 예제
//단 1개의 인스턴스만 생성되는 클래스 작성
public class MySingleton {
//변수 static으로 지정
private static MySingleton mySingleton = null;
//생성자 private으로 작성(외부 호출 불가)
private MySingleton() {
System.out.println("MySingleton 인스턴스 생성");
}
//getInstance()를 통해 접근하도록 함.
//접근 할 메서드는 public으로 작성
public static MySingleton getInstance() {
if(mySingleton == null) {
mySingleton = new MySingleton();
}
return mySingleton;
}
//외부 클래스에서는 new를 통한 인스턴스 생성 불가
}
출처: 초보자를 위한 자바 프로그래밍
예제2
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
public class JdbcConnectionUtil {
private static JdbcConnectionUtil instance;
private String url = "jdbc:oracle:thin:@localhost:1521:XE";
private String user = "jspuser";
private String password = "1234";
private JdbcConnectionUtil() {}
public static JdbcConnectionUtil getInstance() {
synchronized (instance) {
if(instance == null) {
instance = new JdbcConnectionUtil();
}
}
return instance;
}
public Connection getConnection() throws SQLException {
return DriverManager.getConnection(url, user, password);
}
public void close(ResultSet rs) {
if(rs != null) {
try {
rs.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
public void close(Statement stmt) {
if(stmt != null) {
try {
stmt.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
public void close(Connection conn) {
if(conn != null) {
try {
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
}
'JAVA' 카테고리의 다른 글
JAVA 문자열 쪼개기 StringTokenizer charAt (0) | 2022.11.11 |
---|---|
JDBC 한번에 여러개 처리 addBatch, executeBatch (0) | 2022.10.06 |
JAVA 쓰레드 (0) | 2022.07.29 |
JAVA 컬렉션 프레임웍 List Set Map (0) | 2022.07.29 |
JAVA Calendar (0) | 2022.07.26 |