싱글톤패턴(Singleton Pattern)
GoF의 디자인 패턴 중 하나인 싱글톤 패턴은 인스턴스를 오직 하나만 생성해서 메모리를 절약?할 수 있다.
package common.db;
import java.sql.SQLException;
import javax.naming.InitialContext;
import javax.naming.NamingException;
import javax.sql.DataSource;
public class PoolManager2 {
InitialContext context;
DataSource ds;
private static PoolManager2 instance;
private PoolManager2() {
try {
context = new InitialContext();
ds = (DataSource)context.lookup("java:comp/env/jdbc/myoracle");
} catch (NamingException e) {
e.printStackTrace();
}
}
public static PoolManager2 getInstance() {
if(instance==null) {
return instance = new PoolManager2();
}
return instance;
}
}
- 위 코드는 커넥션풀 관리하도록 만든 객체 중 일부이다.
- 생성자의 접근지정자를 private
- 클래스 내에 private인 현재 클래스의 객체를 멤버변수로 둔다
- 해당변수의 get메서드를 static으로 만들어서 외부에서 이 클래스에 대한 인스턴스를 만들고 싶을 때는 오직 get메서드로만 생성할 수 있고 만약 아직 생성되지 않았다면 생성, 생성되어 있으면 그냥 반환만 받는 구조
- static의 메서드에서는 static변수만 사용할 수 있으니 변수를 static으로!
실행결과
package common.db;
public class text {
public static void main(String[] args) {
for(int i=1;i<=10;i++) {
System.out.println(i+" : "+PoolManager2.getInstance());
}
}
}
단 하나의 객체만 생성하게 되는 것을 볼 수 있다!
'프로그래밍 > Java' 카테고리의 다른 글
java - 암호화 (0) | 2021.01.06 |
---|---|
java - mail 보내기 (0) | 2021.01.06 |
JavaFX - 개발환경 구축 및 생명주기 (0) | 2020.11.23 |
Java - JSON & XML 파싱 (0) | 2020.11.17 |
Java - 소켓프로그래밍 기초 Echo System (0) | 2020.11.09 |