능글맞은 구렁이
디자인패턴 - 싱클톤패턴 본문
디자인 패턴이란?
프로그램을 설계할 때 발생했던 문제점들을 객체 간의 상호 관계 등을 이용하여 해결할 수 있도록 하나의 '규약'형태로 만들어 놓은 것을 의미한다.
싱글톤 패턴(Singleton Pettern)이란?
하나의 클래스에 오직 하나의 인스턴스만 가지는 패턴이다.
하나의 클래스를 기반으로 여러 개의 개별적인 인스턴스를 만들 수 있지만, 그렇게 하지 않고 하나의 클래스를 기반으로 단 하나의 인스턴스를 만들어 이를 기반으로 로직을 만드는데 쓰이며, 보통 데이터베이스 연결 모듈에 많이 사용한다.
장점 : 인스턴스를 생성할 때 드는 비용이 줄어든다.
단점 : 의존성이 높아진다.
Java의 예시
class Singleton{
private static class singleInstanceHolde{
private static final Singleton INSTANCE = new Singleton();
}
public static Singleton getInstance(){
return singleInstanceHolder.INSTANCE;
}
}
public class HelloWorld{
public static 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(ture);
}
}
}
/*
true
*/
싱글톤 패턴의 단점
1. 싱글톤 패턴은 TDD(Test Driven Development)를 할 때 걸림돌이 된다.
단위 테스트는 테스트가 서로 독립적이어야 하며 테스트를 어떤 순서로든 실행할 수 있어야 한다.
하지만 싱글톤 패턴은 미리 생성된 하나의 인스턴스를 기반으로 구현하는 패턴이므로 각 테스트마나 '독립적인' 인스턴스를 만들기 어렵다.
2. 모듈 간의 결합을 강하다는 단점이 있다.
이때 의존성 주입(Dependency Injection)을 통해 모듈같의 결합을 조금 더 느슨하게 만들어 해결할 수 있다.
'IT 상식' 카테고리의 다른 글
디자인패턴 - 옵저버 패턴 (0) | 2024.02.06 |
---|---|
디자인패턴 - 팩토리패턴, 전략패턴 (0) | 2024.01.29 |
의존성이란? (0) | 2024.01.22 |
ED25519와 RSA의 차이 (0) | 2023.12.07 |
프로토콜 - TCP,IP,TCP/IP,UDP (1) | 2022.10.12 |