본문 바로가기

Java/java 기초

싱글톤 패턴 공부하기 (Single Ton)

 

 

package single;

public class Singleton {
	
	//static을 넣어서 값을 유지한다.
	private static Singleton single= null;
	//공간은 대부분 public
	public int num;
	public String name;
	
	public String chicken;
	
	//생성자를 private에 집어 넣는다.
	private Singleton() {
		
	}
	
	//내부에서는 생성 가능
	//같은 인스턴스만 계속 리턴
	public static Singleton getInstance() {
		if(single == null) {
			single = new Singleton();
		}
		return single;
	}
}

싱글톤 패턴의 핵심

생성자를 private로 선언해서 받지 못하게 하고 

private static Singleton single 즉 자기 자신을 나타내는 클래스 변수를 스태틱으로 선언해준다.

getInstance 를 스태틱으로 선언 한 후 null일때만 새 SingleTon을 할당해주고 싱글을 반환한다( 즉  null이 아니면 계속 한가지만 반환한다)

내가 이해한 개념은 스토어에 저장하는 개념으로 클래스간 정보 교류를 원할 하게 하기 위해서 만들어진 패턴으로 생각이 된다.

 

 

package acls;

import single.Singleton;

public class MyClass {
	private int myNum;
	private String myName;
	
	public MyClass() {
		myNum = 1234;
		
		Singleton single = Singleton.getInstance();
		single.num = myNum;
	}

	public void MyMethod() {
		Singleton si = Singleton.getInstance();
		myName = si.name;
		
		System.out.println("myName = " + myName);
	}
}

 

package bcls;

import single.Singleton;

public class YouClass {
	private int youNum;
	private String name;

	public YouClass() {
		name = "온유";
		Singleton singleton = Singleton.getInstance();
		singleton.name = name;
	}
	
	
	public void method() {
		Singleton single = Singleton.getInstance();
		youNum = single.num;
		System.out.println("youNum = " + youNum);
	}
	
}

 서로의 값을 생성자에 지정해주고 메소드에서 호출하는 식으로 진행했다.