본문
Singleton Pattern
프로그래밍/디자인패턴 2015. 8. 31. 22:07
반응형
클래스의 인스턴스, 즉 객체를 하나만 만들어 사용하는 패턴
싱글턴 패턴이란 인스턴스를 하나 만들어 사용하기 위한 패턴이다. 커넥션 풀, 스레드 풀, 디바이스 설정 객체 등과 같은 경우 인스턴스를 여러 개 만들게 되면 불필요한 자원을 사용하게 되고, 또 프로그램이 예상치 못한 결과를 낳을 수 있다. 싱글턴 패턴은 오직 인스턴스를 하나만 만들고 그것을 계속해서 재사용한다.
빈번하게 사용되는 임의의 클래스를 전역변수처럼 모든 곳에서 사용할 수 있도록 만들어 불필요한 작업을 줄여 유지보수를 원활하게 만들고 성능 효율성을 향상시키기 위해 사용한다.
💡 Singleton.java
외부에서 Singleton 클래스의 생성자 호출을 금지하기 위해 private으로 선언
new Singleton() 이라는 식이 클래스 외부에 있다고 하더라도 컴파일 시 에러발생
Singleton 패턴은 프로그래머가 실수해도 인스턴스가 1개만 생성되도록 하는 패턴이다.
이것을 보증하기 위해서 생성자를 private로 해둘 필요가 있음.
public class Singleton {
private static Singleton singleton = new Singleton();
private Singleton() {
System.out.println("인스턴스 생성");
}
/*
Singleton의 역할
유일한 인스턴스를 얻기 위한 static 메서드를 갖고 있다.
이 메서드는 언제나 동일한 인스턴스를 반환한다.
프로그램의 실행 개시 후 최초로 getInstance 메소드를 호출했을 때 Singleton 클래스는 초기화된다.
그리고 이때 static 필드의 초기화가 이루어지고 유일한 인스턴스가 만들어진다.
*/
public static Singleton getInstance() {
return singleton;
}
}
💡 Main.java
public class Main {
public static void main(String[] args) {
System.out.println("Start");
Singleton obj1 = Singleton.getInstance();
Singleton obj2 = Singleton.getInstance();
if (obj1 == obj2) {
System.out.println("obj1과 obj2는 같은 인스턴스");
} else {
System.out.println("obj1과 obj2는 다른 인스턴스");
}
System.out.println("End");
}
}
💡 결과
1
2
3
4
|
Start
인스턴스 생성
obj1과 obj2는 같은 인스턴스
End
|
cs |
반응형
댓글