싱글톤(Singleton)
하나의 애플리케이션 내에서 단 하나만 생성되는 객체
public class Singleton {
private static Singleton singleton = new Singleton();
private Singleton() {}
static Singleton getInstance() {
return singleton;
}
}
싱글톤을 만드는 방법
- 외부에서 new 연산자로 생성자를 호출할 수 없도록 막기 (private 접근 제한자를 생성자 앞에 붙임)
- 클래스 자신의 타입으로 정적 필드 선언 (자신의 객체를 생성해 초기화, private 접근 제한자 붙여 외부에서 필드 값 변경 불가하도록)
- 외부에서 호출할 수 있는 정적 메소드인 getInstance() 선언 (정적 필드에서 참조하고 있는 자신의 객체 리턴)
싱글톤 얻는 방법
장점
싱글톤으로 딱 한번 클래스를 생성하여 재활용을 하게 되면 메모리 낭비를 방지할 수 있다는 장점을 가진다. 또한 싱글톤으로 만들어진 클래스는 인스턴스의 전역 인스턴스이기 때문에 다른 클래스의 인스턴스들이 데이터를 공유하기 쉽다.
단점
객체 지향 설계 원칙 중에 개방-폐쇄 원칙이란 것이 존재한다. 만약 싱글톤 인스턴스가 혼자 너무 많은 일을 하거나, 많은 데이터를 공유시키면 다른 클래스들 간의 결합도가 높아지게 되는데, 이때 개방-폐쇄 원칙이 위배된다. 결합도가 높아지게 되면, 유지보수가 힘들고 테스트도 원활하게 진행할 수 없는 문제점이 발생한다.
또한, 멀티 스레드 환경에서 동기화 처리를 하지 않았을 때, 인스턴스가 2개가 생성되는 문제도 발생할 수 있다. 따라서, 반드시 싱글톤이 필요한 상황이 아니면 지양하는 것이 좋다고 한다.
'코딩 공부 > web & Java' 카테고리의 다른 글
[Web] DAO, DTO, VO, Entity (0) | 2022.10.17 |
---|---|
[JAVA] Wrapper Class (0) | 2022.10.11 |
[MySQL WorkBench] error 1175 (0) | 2022.09.29 |
[JDBC] excute 종류 (0) | 2022.09.28 |
[JDBC, MySQL] JDBC로 MySQL에 한글 입력시 깨짐 현상 (0) | 2022.09.27 |