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 예제 연습 중..