능글맞은 구렁이

디자인패턴 - 싱클톤패턴 본문

IT 상식

디자인패턴 - 싱클톤패턴

보라색츄르 2024. 1. 22. 22:13

 

디자인 패턴이란?

프로그램을 설계할 때 발생했던 문제점들을 객체 간의 상호 관계 등을 이용하여 해결할 수 있도록 하나의 '규약'형태로 만들어 놓은 것을 의미한다.

 

싱글톤 패턴(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)을 통해 모듈같의 결합을 조금 더 느슨하게 만들어 해결할 수 있다.

 

2024.01.22 - [IT 상식] - 의존성이란?

'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
Comments