싱글톤패턴(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

+ Recent posts