디자인 패턴
프로그램을 설계할 때 발생했던 문제점들을 객체 간의 상호 관계 등을 이용하여 해결할 수 있도록 하나의 '규약', 약속 형태로 만들어 놓은 것
싱글톤 패턴
하나의 클래스에 하나의 인스턴스만 가지는 패턴 (예 : DB 연결 모듈)
- 전역 변수를 사용하지 않고 객체를 하나만 생성함
- 생성된 객체를 어디서든지 참조할 수 있음
- 여러번 생성해도, 실제로 생성되는 객체는 하나
- 최초 생성 이후에 호출된 생성자는 이미 생성된 객체를 리턴
- 환경설정 클래스, 커넥션 풀과 같이 공통 클래스에 사용하는 것이 일반적
싱글톤 패턴의 특징
- 하나의 인스턴스를 여러 모듈들이 공유하여 사용
- 인스턴스 생성할 때 드는 메모리 비용이 줄어듦
- 여러 모듈에서 사용하기 때문에 의존성이 높아짐
싱글톤 예제 코드
Javascript
class Singleton {
consructor() {
if (!Singleton.instance) {
Singleton.instance = this
}
return Singleton.instance
}
getInstance() {
return this.instance
}
}
const a = new Singleton()
const b = new Singleton()
console.log(a === b) // ==> true
a
와 b
는 하나의 인스턴스를 갖는 것을 알 수 있음
Java
class Singleton {
private static class singleInstanceHolder {
private static final Singleton INSTANCE = new Singleton();
}
public static synchronized Singleton getInstance() {
return singleInstanceHolder.INSTANCE;
}
}
public class HelloWorld {
public class void main(String[] args) {
Singleton a = Singleton.getInstance();
Singleton b = Singleton.getInstance();
System.out.println(a.hashCode());
System.out.println(b.hashCode());
if (a == b) {
System.out.println(true);
}
}
}
/*
705381145
705381145
true
*/
ref
2) 면접을 위한 CS 전공지식 노트 - 주홍철 (길벗)
'ETC' 카테고리의 다른 글
개발 프로젝트 협업 툴 (0) | 2021.09.03 |
---|---|
클린코드 작성하기 Part 2 (0) | 2021.09.02 |
클린코드 작성하기 Part 1 (0) | 2021.08.31 |
티스토리 사이드 목차 TOC(Table of Contents) 추가하기 (오디세이 스킨, 자동 목차 생성) (6) | 2021.03.29 |
티스토리 코드 블럭 지원 언어 추가, 테마 변경 (highlightjs) (0) | 2021.03.23 |