JAVA/개념정리
Singleton
inderrom
2022. 11. 27. 19:39
package kr.or.ddit.basic.singleton;
/*
singleton패턴 ==> 객체가 1개만 만들어지게 하는 방법
(외부에서 new 명령을 사용하지 못하게 한다.)
사용 이유 ==> 1. 메모리 낭비 방지할 수 있다.
2. 데이터를 한 곳에 모아 놓고 공유 하기 쉽다.
- singleton클래스 만드는 방법 ( 필수 구성 요소)
1. 자신 class의 참조값이 저장될 변수를 private static으로 선언한다.
2. 생성자의 접근 제한자를 private으로 한다.
3. 자신 class의 인스턴스를 생성하고 반환하는 메서드를
public static으로 작성한다.
(이 메서드의 이름은 보통 getInstance로 한다.)
*/
public class MySingleton {
// 1번 변수선언
private static MySingleton single;
// 2번 private 생성자
private MySingleton() {
System.out.println("싱글톤 클래스의 생성자 입니다...");
}
// 3번 public static
public static MySingleton getInstance() {
// 1번 변수가 null이면 새로운 객체를 생성하여 1번 변수에 저장한다.
if(single ==null) single = new MySingleton();
// 1번 변수를 반환한다.
return single;
}
// 기타 이 클래스가 처리할 내용들을 작성하면 된다...
public void displayTest() {
System.out.println("싱글톤 클래스에서 만든 메서드 호출입니다...");
}
}
package kr.or.ddit.basic.singleton;
public class SingletonTest {
public static void main(String[] args) {
// MySingleton test1 = new MySingleton(); // 외부에서 new 명령으로 생성 불가
MySingleton test2 = MySingleton.getInstance();
MySingleton test3 = MySingleton.getInstance();
System.out.println();
System.out.println("test2 =>" + test2);
System.out.println("test3 =>" + test3);
System.out.println();
System.out.println("test2 == test3 --> " + (test2 == test3)); //참조값이 같은지 검사라 true가 나온다
System.out.println("test2.equals(est3) --> " + (test2.equals(test3)));
test2.displayTest();
}
}