본문 바로가기
Java & Kotlin/Java

15. 싱글톤 (Singleton)

by heekng 2021. 1. 19.
반응형
 

접근제한자를 이용한 객체생성 방법에는 싱글톤 패턴이 있습니다.

싱글톤패턴은 클래스 내 정적필드에서 private로 객체를 생성하고 getInstance메소드를 통하여 정적필드에서 생성한 객체를 리턴하는 형식으로 객체생성을 합니다.

싱글톤 패턴을 사용해서 얻을 수 있는 장점은 객체생성을 한번만 하고 heap메모리에 하나만 올리기 때문에 같은 값을 가진 객체를 여러번 만들지 않게 되어 메모리를 절약할 수 있습니다.

대표적인 싱글톤 클래스는 Calander 클래스입니다.


1. 실글톤 클래스 생성 방법

1

2

3

4

5

6

7

8

9

10

public class Blog{

private static Blog blog = new Blog(); //클래스 내에서 private 객체 생성

 

private Blog() {

}

 

public static Blog getInstance() {

return blog; //위에서 만든 private 객체 리턴

}

}

싱글톤 클래스는 위와 같은 형식으로 작성됩니다.

private static으로 작성된 Blog객체는 빌드단계에서 메모리에 올라가며 클래스 내에서만 이용 가능합니다.

Blog생성자는 private으로 작성되었기 때문에 다른 클래스에서 생성자를 불러 객체를 생성하지 못하게 막습니다.

public static으로 작성된 getInstance 메소드는 2행에서 생성된 blog객체를 리턴하여 몇번을 getInstance로 객체를 불러오더라도 같은 객체를 불러오게 됩니다.

생성자를 이용하여 객체 생성이 불가능하다.

1

2

3

4

5

6

7

8

9

public class SingletoneMain {

public static void main(String[] args) {

Blog blog1 = Blog.getInstance(); //blog 객체 1 생성

Blog blog2 = Blog.getInstance(); //blog 객체 2 생성

 

//blog1과 blog2 객체가 가리키는 heap메모리의 주소값이 같은지 비교

System.out.println(blog1 == blog2);

}

}

위처럼 getInstance메소드를 이용하여 생성한 Blog클래스의 객체 2개는 서로 비교하였을 때 동일한 값을 가르키고 있다는 것을 알 수 있습니다.

반응형

'Java & Kotlin > Java' 카테고리의 다른 글

20.11.04 - 반복문 예제  (0) 2021.01.19
20.11.03 - 연산자 예제  (0) 2021.01.19
16. 상속 (extends, 오버라이드)  (0) 2021.01.19
14. 접근제한자(public, protected, private, default), getter, setter  (0) 2021.01.19
13. final  (0) 2021.01.19
12. Static  (0) 2021.01.19