1. 단일 모드 (Singleton)

더 읽 기
package _1Singleton;

public class Singleton {
	
	private static Singleton singleton = new Singleton(1);
	
	private Singleton(int i)
	{
		System.out.println(i);
	}

	/**
	 * Solution 1 
	 *              ,singleton      
	 * 
	 * @return
	 */
	public static Singleton getInstance()
	{
		return singleton;
	}
	
	/**
	 * Solution 2
	 *             ,         
	 * 
	 * @return
	 */
    public static Singleton getInstance2() {
        if(singleton == null) {
           synchronized(Singleton.class) {
             if(singleton == null) {
               singleton = new Singleton(2);
             }
          }
        }
        return singleton;
      }
      
	/**
	 * Solution 3
	 *             ,     
	 * 
	 * @return
	 */
      public static Singleton getInstance3() 
      {     
        return SingletonHolder.instance;
      }   
    
	/**
	 * @param args
	 */
	public static void main(String[] args) {
		Singleton.getInstance();
	}
	
	private static class SingletonHolder
	{
		private static Singleton instance = new Singleton(3);
    }
}
 
위 에 세 가지 단일 모델 의 실현 방식 을 열거 하 였 는데, 물론 방안 중 하 나 는 가장 간단 하고 사용 을 건의 합 니 다.
단일 사례 의 장점:
  • 메모리 비용 감소
  • 시스템 성능 비용 감소
  • 자원 에 대한 다 중 점용 을 피한다
  • 단일 사례 모델 은 시스템 에서 전체적인 방문 점 을 설정 하고 자원 방문 을 최적화 하고 공유 할 수 있다 (예 를 들 어 하나의 사례 류 는 모든 데이터 시트 의 매 핑 처 리 를 책임 진다
  • .
    단일 사례 의 단점:
  • 단일 모드 는 일반적으로 인터페이스 가 없고 확장 이 쉽 지 않 으 며 기능 변경 시 코드 만 수정 할 수 있다
  • 단 례 미 완성 시 테스트 작업 불가
  • 단일 모델 과 단일 직책 원칙 이 충돌 합 니 다.
  • 스 레 드 안전 확보
  • 단일 사례 의 응용 장면:
  • 성도 의 유일한 서열 번 호 를 요구 하 는 환경
  • 전체 프로젝트 에 공유 액세스 포인트 나 공유 데이터 가 필요 합 니 다. 예 를 들 어 웹 페이지 의 액세스 카운터
  • 대상 을 만 드 는 데 소모 되 는 자원 이 너무 많 습 니 다. 예 를 들 어 IO 와 데이터 베 이 스 를 방문 하 는 등 자원
  • 대량의 정적 상수 와 정적 방법 (예 를 들 어 도구 류) 의 환경
  • 을 정의 해 야 한다.

    좋은 웹페이지 즐겨찾기