싱글톤 패턴, Singleton
- 객체를 여러 번 생성하려고 시도하더라도 하나의 인스턴스(객체)가 유지되도록 고안한 패턴
- 객체 생성에 필요한 자원의 요구 정도가 높은 객체를 빈번히 생성하지 않고 딱 한 번 만들어두고 계속 사용하기 위해서 적용
- 싱글톤 패턴이 적용되는 위치
- 리소스를 많이 사용하는 자원을 로드할 때
- 1번과 같은 자원들을 지속적으로 사용될 때
- ex) JDBC 드라이버, Log(로그) 객체,
static 블록, 초기화 블록, Initialization Block
- 클래스의 코드가 로드될 때 딱 한번만 수행하는 코드 블록
- 객체 생성(인스턴스화, 생성자 호출, new 객체()) 과는 무관하게 수행된다.
- 클래스 변수(정적 변수, static 변수)를 초기화할 때 사용한다.
- 클래스 변수에 단순 값 대입(초기화)에 추가적으로 작업이 필요할 때(예외처리 - try/catch문)
Class Loader
클래스 로드 및 객체 생성 순서
- 클래스 코드 로드 (클래스 로더가 수행)
- 클래스 변수(정적 변수) 생성
- static 블록 수행
--------------- 클래스로드 완료 ----------------
- 로드(준비)된 클래스의 생성자를 호출하며 인스턴스를 생성한다(프로그램 동작)
- 클래스 로더의 수행 절차
- 바이트 코드 분석 및 검증
- 프로그램에서 사용된 클래스들을 JRE 라이브러리에서 .class(바이트코드) 파일로 찾기
- 없다면 CLASSPATH 에서 .class(바이트코드) 찾기
- 찾은 이후에 올바른 문법의 바이트코드인지 검증한다.
- 정상적인 문법이면 .class 파일을 메모리에 로드한다
- 클래스 블록(정적필드, 정적메소드) 처리
- static 초기화 블록 수행
반응형
'Engineering' 카테고리의 다른 글
[log4j] 현재 매우매우 핫한 log4j 취약점 매우매우 간단하게 조치하는 방법! (0) | 2021.12.14 |
---|---|
디자인 패턴, Design Pattern (0) | 2020.10.09 |
프로그래밍 아키텍쳐, Architecture (0) | 2020.10.09 |
HTTP 통신(WEB 통신) 과정 (0) | 2020.09.29 |