JAVA Programming

[21] static 을 활용한 싱글톤 패턴

꾸준히개발하자 2020. 7. 14. 14:16

디자인패턴 객체지향 설계할 때 유지보수 하기 위한 23가지 패턴을 소개한 방법이 있다.

객체지향 언어이면 다 사용할수있게끔 되어있다 그중에 싱글톤패턴이 있다.

이미 구현된걸 가져다 쓸 때 new 해서 쓰지않고 어떤 인스턴스를 쓸 때 이해하면 좋다.

 

단하나만 존재하는 인스턴스 – singleton pattern

생성자로 private 으로 static 으로 유일한 객체 생성 외부에서 유일한 객체를 참조할수 있는

Public static get() 메소드를 구현한다.

 

 

-   Private

+  public

Private를 가져오게 public를 만들어서 get 해서 가져올수있게 한다.

 

package staticex;

public class Company {

	private static Company instance = new Company(); // 하나는 있어야될때  내부적으로 자기 자신을 가진 인스턴스를 하나 만든다. 
													 // 시스템 전체에 유일한 애다	
	private Company() {} // 외부에 오픈되는 생성자가 아니다.
		
	// 가져다 쓰려면
	public static Company getInstance() { // 일반메소드는 인스턴스 해야지 생성이 가능  이 메소드를 static으로 만든다.  리턴하는건 Company 
		if(instance == null) {
			instance = new Company(); // 하나도 없을때 인스턴스를 만든다.  
		}
		return instance;
	}
package staticex;

import java.util.Calendar;

public class CompanyTest {
	public static void main(String[] args) {
//		Company company = new Compnay(); private 이라 쓸수없다
		
		Company company = Company.getInstance(); // public static으로 선언된 메소드를 가져다 쓸수있다. 	
		Company company2 = Company.getInstance();
		
		// 단하나만 생성해서 그것을 계속 사용할수있다. 
		System.out.println(company);
		System.out.println(company2);
		
		
		// Calendar 가져오는 곳은 동일하다. Calendar도 싱글톤 패턴으로 구현되어 있다. 
		Calendar calendar = Calendar.getInstance();
		
	}
}

static  하나의 메모리 영역을 공유하는 것을 알수있다.

static = 정적 = 공유 = 클래스 메소드 =