본문 바로가기

LANG../JAVA

[디자인패턴] 싱글톤 패턴(Singleton Pattertn)

싱글톤 패턴 (Singleton Pattern):

- 싱글톤 패턴은 어떤 클래스가 단 하나의 객체를 가지고, 이에 대한 전역적인 접근점을 제공하는 패턴이다.

- 이 패턴을 사용하면 특정 클래스의 인스턴스가 하나만 생성되도록 보장할 수 있으며, 어디서든 이 인스턴스에 접근할 수 있게 전역의 개념으로 객체를 사용할 수 있다.

- 인스턴스를 무분별하게 많이 만들어서 메모리를 많이 잡아먹는 현상을 방지할 수 있다.

-> 메모리 절약을 위해 인스턴스가 필요할 때 새로 만들지 않고 기존의 인스턴스를 활용하는 기법

- 의존성이 높아진다는 단점이 있다.

package Singleton;

public class singleton {

	/*
	 * 싱글톤 패턴 - 객체를 1개만 만들어 유지하기 위한 디자인 패턴
	 * 1. 외부에서 생성자를 사용할 수 없도록 생성자에 private 붙임 
	 */
	private singleton() {}
	/*
	 * 2. 자신의 클래스 내부에서 스스로의 객체 1개를 생성합니다.
	 * 이 때, 멤버변수는 힙에 할당된 객체 없이 쓸 수 있도록 static 입니다.
	 */
	private static singleton instance;
		
	static {
			instance=new singleton();
		}
	
	/*
	 * 3.외부에서 이 클래스의 객체를 필요로 하는 경우
	 * 2번에서 static으로 생성된 객체의 주소를 return 합니다.
	 */
	public static singleton getInstance() {
		if(instance==null) {
			instance = new singleton();
		}
		return instance;
		}
}
package Singleton;

public class MainClass {

	public static void main(String[] args) {
		
		//Singleton 객체는 생성자가 private이므로 인스턴스 생성 불가
		//singleton s1 = new singleton();
	
		//getInstance메소드는 static이어서 new 없이도 바로 사용 가능
		singleton s1= singleton.getInstance();
		System.out.println("s1의 레퍼런스 : "+s1);
		
		singleton s2= singleton.getInstance();
		System.out.println("s2의 레퍼런스 : "+s2);
	}

}

'LANG.. > JAVA' 카테고리의 다른 글

final  (0) 2024.01.17
[디자인 패턴] 템플릿 메소드 패턴 (Template Method Pattern)  (1) 2024.01.16
static  (0) 2024.01.12
객체 지향 프로그래밍(OOP)  (0) 2024.01.10
오버로딩과 오버라이딩  (0) 2024.01.10