디자인 모드 (단일 예)

1688 단어
  • 역할: 1 개의 클래스 가 1 개의 인 스 턴 스 만 만 들 수 있 도록 보장 하고 이 클래스 는 이 인 스 턴 스 를 방문 하 는 전체 방문 점
  • 을 제공 합 니 다.
  • 장점: 시스템 성능 비용 감소
  • 굶 주 린 식 (스 레 드 가 안전 하고 호출 효율 이 높 으 며 시간 을 끌 수 없습니다):
    public class Singleton {
        private static Singleton instance = new Singleton();
    
        private Singleton() {}
    
        public static Singleton getInstance() {
            return instance;
        }
    }
    

    게으름뱅이 식 (스 레 드 안전, 호출 효율 이 낮 고 시간 지연 생 성 가능):
    public class Singleton {
        private static Singleton instance;
    
        private Singleton() {}
    
        public static synchronized Singleton getInstance() {
            if (instance == null) {
                instance = new Singleton();
            }
            return instance;
        }
    }
    

    이중 검사 잠 금 (이중 선택 잠 금):
    public class Singleton {
        
        private volatile static Singleton instance;
        
        private Singleton (){}
        
        public static Singleton getInstance() {
            if (instance == null) {
                synchronized (Singleton.class) {
                    if (instance == null) {
                        instance = new Singleton();
                    }
                }
            }
            return instance;
        }
    }  
    

    정적 내부 클래스 구현 방식 (스 레 드 안전, 호출 효율 이 높 고 시간 지연 생 성 가능):
    public class Singleton {
        private static class SingletonHolder {
            private static final Singleton instance = new Singleton();
        }
    
        private Singleton() {}
    
        public static Singleton getInstance() {
            return SingletonHolder.instance;
        }
    }
    

    일괄 구현 사례 (생 성 지연 불가):
    public enum Singleton {
    
        INSTANCE;
    
        //          
        public void singletonOperation() {}
    }
    

    좋은 웹페이지 즐겨찾기