관리 메뉴

Frog is cry

싱글톤(day18) 본문

JAVA/국비수업

싱글톤(day18)

Frog is cry 2020. 7. 23. 17:41
package day19.ex02_singleton;
// 싱글톤예제
public class Singleton {
	// 클래스 자신의 타입으로 스테틱 필드(정적필드)를 선언함
	private static Singleton singleton = new Singleton();
	
	// private 접근제한자를 생성자 앞에 붙임;
	// private 생성자는 접근의 정도가 제일 작은 접근제한자입니다.
	// 접근 제한자는 이후의 수업에 나오는 개념입니다만, 미리 설명하면
	// 1. 모든 클래스에게 공개할지
	// 2. 동일한 프로젝트의 클래스에게 공개할지,
	// 3. 같은 패키지에만 공개할지의 공개 정조를 구별하는 제한자입니다.
	private Singleton() {}
	 
	// 스테틱 메소드(정적메소드)인 getInstance()를 선언함.
	// 싱글톤 방식으로 객체를 선언하기 위해서는
	// 반드시 이 메서드를 이용하여야 함.
	static Singleton getInstance() {
		return singleton;

	}
	
}
package day19.ex02_singleton;

public class Singleton_Ex {
	public static void main(String[] args) {
		
//		Singleton obj1 = new Singleton();	// 컴파일 에러
//		Singleton obj1 = new Singleton();	// 컴파일 에러
		
		Singleton obj3 = Singleton.getInstance();
		Singleton obj4 = Singleton.getInstance();
		System.out.println("obj3 : " + obj3);
		System.out.println("obj4 : " + obj4);
		
		if(obj3 == obj4) {
			System.out.println("같은 Singleton 객체입니다.");
		}else {
			System.out.println("다른 Singleton 객체입니다.");
		}
		
		
	}
}
package day19.ex02_singleton;

public class Singleton2 {
	int test_num;
	
	private static Singleton2 s2 = new Singleton2();
	
	private Singleton2() {}
	
	static Singleton2 getInstance() {
		return s2;
	}
	
	public int run(int num) {
		this.test_num = num * num;
		return this.test_num;
	}
	
}
package day19.ex02_singleton;

public class Singleton2_Ex {
	public static void main(String[] args) {
		
		Singleton2 s1 = Singleton2.getInstance();
		Singleton2 s2 = Singleton2.getInstance();
		
		System.out.println("s1 : " + s1);
		System.out.println("s2 : " + s2);
		
		if (s1 == s2) {
			System.out.println("같은 Singleton 객채입니다.");
		}else {
			System.out.println("다른 Singleton 객체입니다.");
		}
		int num = s1.run(10);
		System.out.println("s1.run(10) : " + s1.run(10));
		System.out.println("s2.test_num : " + s2.test_num);
	}
}

'JAVA > 국비수업' 카테고리의 다른 글

패키지-import(Day19)  (0) 2020.07.24
파이널(day18)  (0) 2020.07.23
스테틱 변수(day18)  (0) 2020.07.23
메소드(day17)  (0) 2020.07.22
메소드 (Day16)  (0) 2020.07.21
Comments