[Design Pattern] 싱글턴 패턴

2021. 5. 9. 12:50·노빠꾸 개발일지/JAVA
반응형

싱글턴 패턴(Singleton Pattern)이란? 

싱글턴 패턴이란 인스턴스가 하나 뿐인 특별한 객체를 만들 수 있게 해주는 패턴으로, 

 

싱글턴으로 생성된 인스턴스에 자유롭게 접근하여 사용이 가능하다.

 

싱글턴 패턴을 사용하는 이유는 인스턴스를 한번 생성 후, 재사용하여 사용하기 때문에 메모리낭비를 줄일 수 있다.

 

싱글턴 패턴은 인스턴스를 생성 후 같은 자원을 계속해서 이용하므로, 연결풀 또는 스레드 풀과 같은 자원 풀을 관리하는데도 자주 이용된다.

 

싱글턴 패턴 예제

1
2
3
4
5
6
7
8
9
10
public class Singleton {
    private static final Singleton singletonTest = new Singleton();    // 초기화 부분에서 인스턴스를 생성
 
    // 생성자를 private로 선언 - Singleton클래스에서만 Singleton 클래스의 인스턴스를 생성 가능
    private Singleton() { }    
 
    public static Singleton getInstance() {
        return singletonTest;    // 생성된 싱근턴 인스턴스를 리턴
    }
}
Colored by Color Scripter
cs

 

위의 예제를 보면 생성자를 private로 선언하여 Singleton 클래스의 인스턴스를 외부에서는 생성이 불가능하고,

 

Singleton클래스 내부에서만 생성이 가능하도록 하였다.

 

초기화 부분에서 Singleton인스턴스를 생성했으니, 외부에서는 getInstance()를 이용하여 해당 인스턴스를 사용하면 된다.

 

1
2
    Singleton singleton = Singleton.getInstance();
    // ... 인스턴스를 이용하여 필요한 코드 작성
cs

 

외부에서는 위의 코드와 같이 생성된 싱글턴인스턴스를 받아서 필요한 코드를 이어서 작성하면 된다.

반응형
저작자표시 비영리 변경금지 (새창열림)

'노빠꾸 개발일지 > JAVA' 카테고리의 다른 글

[JAVA] JSON 객체 사용법 정리(JsonObject, JsonArray) 데이터 파싱, 데이터 수정  (0) 2022.07.09
[JPA] JPA(Java Persistence API) 란?  (0) 2022.04.06
[리눅스] JAVA 설치 및 환경설정  (1) 2020.11.22
[Java] 오버로딩 & 오버라이딩 차이 비교 정리(오버로딩, 오버라이딩 차이점)  (0) 2020.10.25
[JAVA] JAVA 날짜 클래스 정리 - Date(), SimpleDateFormat(), 날짜 타입 형변환...  (1) 2020.10.21
'노빠꾸 개발일지/JAVA' 카테고리의 다른 글
  • [JAVA] JSON 객체 사용법 정리(JsonObject, JsonArray) 데이터 파싱, 데이터 수정
  • [JPA] JPA(Java Persistence API) 란?
  • [리눅스] JAVA 설치 및 환경설정
  • [Java] 오버로딩 & 오버라이딩 차이 비교 정리(오버로딩, 오버라이딩 차이점)
No Backing
No Backing
노빠꾸
    300x250
  • No Backing
    누릇한 노빠꾸 블로그
    No Backing
  • 전체
    오늘
    어제
    • 분류 전체보기 (144)
      • 노빠꾸 서버 (20)
        • AWS (0)
        • 설치관련 (7)
        • 명령어 정리 (2)
        • 서버 설정 (8)
        • Nginx (2)
      • 노빠꾸 개발일지 (70)
        • JAVA (16)
        • JQUERY & JAVASCRIPT (10)
        • HTML5 (0)
        • SPRING (16)
        • Design Patterns (1)
        • DAUM API (1)
        • GIT (10)
        • Python (1)
        • SPRING SECURITY (1)
        • Vue (3)
      • 노빠꾸 데이터베이스 (9)
        • SQL (1)
        • ORACLE (3)
        • MySql (5)
      • 노빠꾸 일상 (13)
      • 노빠꾸 책 추천 (4)
      • 노빠꾸 경제 (20)
      • 노빠꾸 맥북 사용기 (7)
      • 노빠꾸 정보처리기사 정리 (1)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    맥북 사용 팁
    맥북 단축키
    websecurityconfigureradapter 빈 등록
    websecurityconfigureradapter란
    MySQL 데이터베이스 생성
    리눅스 자바 설치
    MySQL 사용자 계정 생성
    스프링시큐리티 websecurityconfigureradapter
    경제용어
    인텔리제이
    사이트맵
    WebSecurityConfigurerAdapter Deprecated
    스프링부트
    websecurityconfigureradapter 사용법
    스프링 시큐리티 5.7 버전이후 변경사항
    주식용어
    websecurityconfigureradapter 변경사항
    JPA 쿼리 메소드
    Spring boot
    깃허브 코파일럿
    Linode
    스프링부트 JPA
    스프링부트란
    스프링부트 프로젝트
    리노드
    개인서버 추천
    WebSecurityConfigurerAdapter
    우분투 자바 설치
    금융용어
    티스토리 사이트맵 등록
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
No Backing
[Design Pattern] 싱글턴 패턴
상단으로

티스토리툴바