정처기 감자정처기 감자
Java클래스/메서드

검색

검색어를 입력해 개념, 문제, 필기를 찾습니다.

Java 싱글톤(Singleton) 패턴 - 인스턴스를 하나만 만드는 방법

코딩Java
읽는데 5분 소요
처음 쓰인 날: 2026-02-17
마지막 수정일: 2026-02-17
조회수: —
선수학습(1개)
  • Java static 키워드 - 클래스 메서드와 클래스 변수

요약

Java 싱글톤(Singleton) 패턴의 개념과 동작 원리를 알아봅니다. static 변수로 인스턴스를 관리하고, 같은 객체를 공유하는 원리를 정보처리기사 실기 기출문제와 함께 정리합니다.

싱글톤 패턴 핵심 정리

개념설명예시
싱글톤 패턴클래스의 인스턴스가 하나만 생성되도록 보장Gamja.get()
static 변수클래스에 하나만 존재하는 공유 변수static private Gamja instance
같은 객체 참조여러 변수가 동일한 인스턴스를 가리킴s1, s2, s3 모두 같은 객체
private 생성자외부에서 new로 직접 생성하지 못하게 막음private Gamja() { }

싱글톤 패턴이란?

싱글톤(Singleton) 패턴 은 클래스의 인스턴스(객체)가 오직 하나만 생성되도록 보장하는 디자인 패턴입니다.

쉽게 말하면, "이 클래스로 만들 수 있는 객체는 딱 하나뿐" 이라는 규칙입니다.

java
코드 하이라이팅 중…

왜 하나만 만들까?

프린터, 설정 파일, 데이터베이스 연결처럼 하나만 있어야 하는 것들이 있습니다. 객체가 여러 개 만들어지면 충돌이 생길 수 있기 때문입니다.

시험에서는 '왜 쓰는지'보다 '어떻게 동작하는지'가 중요합니다
싱글톤 패턴의 사용 이유보다는 코드의 실행 흐름을 따라가서 출력 결과를 맞히는 것이 핵심입니다. get() 메서드가 어떻게 동작하는지, s1/s2/s3가 같은 객체인지를 파악하세요.

싱글톤 패턴 구조

기출문제에 출제된 싱글톤 패턴의 구조를 살펴보겠습니다.

java
코드 하이라이팅 중…

핵심 요소 3가지

요소코드역할
static 변수static private Gamja instance = null;유일한 인스턴스를 저장하는 공간
static 메서드static public Gamja get() { ... }인스턴스를 반환 (없으면 생성, 있으면 기존 반환)
조건 검사if (instance == null)이미 만든 적 있는지 확인
static 키워드가 핵심입니다
instance 변수와 get() 메서드 모두 static으로 선언되어 있어서, 객체를 만들지 않고도 Gamja.get()으로 호출할 수 있습니다. static에 대해 더 자세히 알고 싶다면 static 키워드 페이지를 참고하세요.

get() 메서드 동작 원리

get() 메서드는 처음 호출할 때만 객체를 생성하고, 이후에는 기존 객체를 반환합니다.

처음 호출할 때 (instance == null)

java
코드 하이라이팅 중…
  1. instance가 null인지 확인 -> null이다 (아직 객체를 만든 적 없음)
  2. instance = new Gamja(); -> 새 객체를 생성하여 instance에 저장
  3. return instance; -> 새로 만든 객체를 반환
  4. s1이 이 객체를 가리킴

두 번째 이후 호출할 때 (instance != null)

java
코드 하이라이팅 중…
  1. instance가 null인지 확인 -> null이 아니다 (이미 객체가 있음)
  2. if 블록을 건너뜀 (새 객체를 만들지 않음)
  3. return instance; -> 기존 객체를 그대로 반환
  4. s2도 s1과 같은 객체를 가리킴
text
코드 하이라이팅 중…

기출문제 풀어보기

21년 3회 기출 코드

java
코드 하이라이팅 중…

단계별 실행 추적

순서코드instancecount설명
1s1 = Gamja.get()새 객체 생성0null이므로 새로 만듦
2s1.count()-1count 1 증가
3s2 = Gamja.get()기존 객체 반환1null이 아니므로 기존 반환
4s2.count()-2같은 객체의 count 1 증가
5s3 = Gamja.get()기존 객체 반환2null이 아니므로 기존 반환
6s3.count()-3같은 객체의 count 1 증가
7s1.getCount()-3s1도 같은 객체이므로 3 반환

출력: 3

핵심 포인트

s1, s2, s3는 모두 같은 Gamja 객체를 참조합니다. 따라서 어떤 변수로 count()를 호출해도 같은 count 변수가 증가합니다.

만약 싱글톤이 아니었다면 (매번 new Gamja()로 새 객체를 만들었다면), 각 객체마다 count가 따로 있어서 결과는 1이 됩니다.

패턴s1.counts2.counts3.counts1.getCount()
싱글톤 (같은 객체)1233
일반 (각각 다른 객체)1111

시험 풀이 전략

싱글톤 패턴 확인하는 방법

코드에서 다음 3가지가 보이면 싱글톤 패턴입니다.

  1. static 변수에 자기 자신 타입 저장: static private Gamja instance
  2. null 검사 후 생성: if (instance == null) instance = new Gamja();
  3. static 메서드로 반환: static public Gamja get() { return instance; }

풀이 순서

  1. 싱글톤 패턴임을 확인 -> 모든 변수가 같은 객체를 참조
  2. get() 호출마다 같은 객체가 반환됨을 인지
  3. count++ 같은 연산이 누적됨을 추적
  4. 최종 getCount()는 누적된 값을 반환
count() 호출 횟수만 세면 됩니다
싱글톤이라는 것을 파악하면, s1/s2/s3 구분 없이 count() 메서드가 총 몇 번 호출되었는지만 세면 정답을 구할 수 있습니다.

정보처리기사 실기 기출 문제

문제를 불러오는 중이에요.
문제를 불러오는 중이에요.
문제를 불러오는 중이에요.
메가커피와 함께, 홈페이지 개선에 참여하세요! ☕
혹시 이용에 불편한 점이나 개선이 필요한 부분을 발견하셨나요? 댓글로 알려주시면 더 나은 감자가 될 수 있어요! 🥔 제보해주신 모든 분께 메가커피 기프티콘을 드립니다! (본인 이메일로 댓글 달아주셔야해요~)
정처기 감자정처기 감자

정보처리기사 합격
도와줄라고 하는 감자

실기 이론

  • 이론 공부법
  • DB
  • 네트워크/OS
  • SW 설계
  • SW 개발
  • 보안/신기술

시험 응시

  • 시험장 찾기
  • 원서 접수
  • 응시자격 서류

요약 PDF

  • 26년 3회 이론 압축
  • 26년 3회 코딩 압축
  • 초압축 25년 3회
  • 압축 25년 3회

기출문제

  • 전체 기출문제
  • 25년 3회
  • 25년 2회
  • 문제 포럼

감자 이용권

  • 이용권 구매

실기 이론

  • 이론 공부법
  • DB
  • 네트워크/OS
  • SW 설계
  • SW 개발
  • 보안/신기술

시험 응시

  • 시험장 찾기
  • 원서 접수
  • 응시자격 서류

요약 PDF

  • 26년 3회 이론 압축
  • 26년 3회 코딩 압축
  • 초압축 25년 3회
  • 압축 25년 3회

기출문제

  • 전체 기출문제
  • 25년 3회
  • 25년 2회
  • 문제 포럼

감자 이용권

  • 이용권 구매
© 2025 재현기획개발. All rights reserved.
  • 정처기 감자의 시작
  • 업데이트 로그
  • 개인정보 처리방침
  • 이용약관
상호명 : 재현기획개발 / 주소: 서울특별시 영등포구 영등포로 150, 지하1층 108호 L145 가라지(당산동1가, 생각공장 당산) / 대표: 김재현 / 전화: 010-8158-7127 / 통신판매업신고: 제2025-서울영등포-1569호 / 이메일: contact@edugamja.com / 사업자등록번호: 573-51-00999