싱글톤 패턴

김신영·2022년 6월 16일
0

디자인 패턴

목록 보기
1/1

MVC2 패턴을 공부하는데
싱글톤 패턴으로 인스턴스를 생성했다

싱글톤 패턴

최초에 한번만 메모리를 할당하고(static)
그 메모리에 인스턴스를 만들어 사용하는 디자인 패턴.

static으로 여러 곳에서 요청을하면 설정 값이 변경될 위험이 생길 수 있다.
싱글톤 패턴은 인스턴스가 1개만 생성되는 특징을 가져서,
하나의 인스턴스를 메모리에 등록하고 여러 쓰레드가 인스턴스를 공유하여 사용하면 효율이 좋아진다.

장점

-인스턴스가 절대적으로 한 개만 존재하게 하고싶은 경우에 사용한다.

-두 번째 이용하면서부터는 객체 로딩 시간이 줄어 성능이 좋아진다.

-싱글톤으로 만들어진 인스턴스는 다른 클래스의 인스턴스들이 데이터를 공유하기 용이하다.

단점

  • 싱글톤 인스턴스가 너무 많이 사용되어지면 다른 클래스 인스턴스들 간에 결합도가 높아져
    "개방-폐쇄 원칙" 을 위배하게 된다.

  • 객체 지향 설게 원칙에 어긋난다. >> 수정이 어려워지고 유지보수 비용이 높아질 위험이 있다.

  • 멀티쓰레드 환경에서 동기화 처리를 안하면 인스턴스가 2개가 생성 될 수 있는 가능성이 있다.

싱글톤 인스턴스 생성

싱글톤 객체가 있다

public class Singleton

인스턴스를 하나만 존재하게끔 생성자를 private로 생성한다

private Singleton(){}

생성자가 private라서 아무도 이 객체를 생성할 수가 없다..

자신을 멤버로 선언하고 메모리에 올린다(static)

private static Singleton st = new Singleton();

메모리에 올렸으나 여전히 생성이 불가능하다..

멤버로 선언된 st를 가져갈 수 있게 method를 만든다.

public static Singleton getInstance(){
		return st;
}

이로써 getInstance 메소드를 사용해야지만 Singleton 객체를 생성 및 사용할 수 있게되었다.

만약 누군가 객체를 사용하고 있으면 다른 사람이 사용하지 못하게끔 해보자.

Singleton st = Singleton.getInstance();
	if( st.isEnableUseSt() ){
    	st.use();
     }else{
     	System.out.print(" +++++ wait +++++ " );
     }

JSP&Servlet MVC2 예제 연습 중..

profile
열심히!!

0개의 댓글