티스토리 뷰

programming language/Java

[자바] Singleton pattern

무니웜테일패드풋프롱스 2020. 4. 11. 08:06

 

싱글톤 패턴이란 ?

 

클래스가 오로지 하나의 인스턴스만을 가지고 있는 패턴을 말한다. 

싱글턴 패턴으로 구현된 대표적인 클래스는 Calendar 클래스가 있다.

 

어떻게 구현하는가 ? 

 

  1. 외부에서 인스턴스를 생성할 수 없도록, 생성자의 접근 제어자를 private으로 설정해준다.
  2. 유일한 인스턴스는 클래스 내부에서 생성해놓는다.
  3. 클래스 내부에 생성된 인스턴스를 반환할 수 있는 클래스 메서드를 만든다 
package Singltone;

public class Company {
	private static Company instance = new Company(); 
	private Company(){} 
	
	public static Company getInstance() {
		if(instance == null)
			instance= new Company();
		return instance;
	}
}

위에가 바로 싱글턴 패턴 클래스의 에시이다.  인스턴스를 반환하는 함수를 static 메서드로 한 이유는 간단하다. 인스턴스 메서드는 클래스 외부에서 '인스턴스를 생성한 후' 접근이 가능하다. 하지만, 싱글턴 패턴에서는 외부에서 인스턴스 생성이 아예 불가능하다. 

따라서 외부에서 인스턴스 생성 없이도 접근 가능하도록 클래스 메서드로 선언해주어야 한다.

 

package Singltone;

public class CompanyTest {
	public static void main(String[] args) 
	{
		Company c1 =Company.getInstance();
		Company c2 =Company.getInstance(); //static 메서드 
		
		System.out.println(c1); //c1 == c2 is true (같은 인스턴스) 
		System.out.println(c2);
	}
}

 

댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/11   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
글 보관함