Frog is cry
싱글톤(day18) 본문
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