[Design Pattern] 싱글톤 패턴

싱글톤 패턴이란? 

하나의 인스턴스만을 생성하여 사용하는 패턴이다.

최초로 생성된 객체 하나만을 가지고 호출하는 방식을 사용한다.

싱글톤 패턴의 장점

하나의 객체만 생성하여 불필요한 객체 생성을 막을 수 있다.

단점

하나의 객체를 공유하는 것이기 때문에 상태를 가진 객체를 공유하면 문제가 생길 수 있다.

또한 아무 객체나 자유롭게 접근하고 사용하는 것은 객체지향이랑 어울리지 않는다.

의존성이 높아지게 되므로 유지보수와 테스트에 어려움이  생긴다.

 

이처럼 싱글톤패턴은 장점보다 단점이 더 많은 패턴이기 때문에 주의해서 사용해야한다.

 

의존성 문제는 싱글톤 객체가 다른 객체와 바로 연결되어있어 의존성이 매우 높아 변경사항이 생기면 상당히 까다로워지기 때문에 중간에 의존서 주입자를 두어 A객체를 수정하더라도 B객체의 코드를 수정하지 않아도 되도록 의존성을 떨어트리는 방법을 사용한다. 

 

주로 사용하는 경우

주로 공통된 객체를 여러 개 생성해야하는 경우에 사용한다.

ex) DB 커넥션 풀, 스레드 풀 등등

 

+ spring의 bean은 싱글톤 객체이다.

 

코드 예시

public class Singleton{
	private Singleton instance = new  Singleton();
    
    private Singleton(){
    	//생성자를 private로 지정한 이유는 생성자 호출을 막기 위함이다.
    }
    
    public static singleton getInstance(){	
    	//static으로 선언하여 프로그램 실행 시 메모리에 올려두고
        //new를 통한 객체 생성 없이 Singleton.getInstance()로 호출할 수 있다.
    	return instance;
    }
    
    //func1
    
    //func2
    
    //...
}

'DevOps > Architecture' 카테고리의 다른 글

[Design Pattern] 템플릿 메소드 패턴  (0) 2023.03.29
MSA Architecture  (0) 2023.02.25