안드로이드 싱글톤 예제

getInstance() 메서드를 사용하여 Singleton 클래스를 구현하면 지연 로딩, 멀티 스레딩 및 Singleton의 기능이있는 “DCL (DCL)을 휘발성 키워드로 다시 확인 됨”으로 만든 패턴이 있다고 생각합니다. 빌 푸의 구현은 게으른 초기화보다 게으른 것으로 간주되기 때문에 빌 pugh 싱글 톤 구현보다 더 나은 것으로 간주됩니다! 변동키워드로 Bill pugh 구현과 DCL의 차이점에 대해 말씀해 주십시오. 이 기사가 싱글 톤 디자인 패턴의 세부 사항을 파악하는 데 도움이되기를 바랍니다, 당신의 생각과 의견을 통해 알려. 예를 들어 리플렉션을 사용하여 싱글톤을 깨는 것을 방지하는 방법을 시나리오를 추가해 주시겠습니까? 모든 접근 크게 우려 문제 및 혜택과 함께 설명. 멋진 기사. 판카즈 나는 개인적으로 당신의 이해를 주셔서 감사합니다. 최고의 이제까지 나는 싱글 톤 기사를 보았다. 그것을 유지! 개인 EnumSingleton(){스캐너 = 새 스캐너(System.in); } 공용 정적 보이드 메인(String[] args)은 예외 { 싱글톤 s1 = Singleton.getInstance()를 throw합니다. 싱글톤 s2 = null; try { 생성자[] 생성자 = Singleton.class.get선언 생성자(); for (생성자 생성자 : 생성자) { 생성자.setaccessible(true); s2 = (싱글톤) 생성자.newInstance(); 예.printStackTrace(); } System.out.println(s1); System.out.println(s2); } } ————————————————————————————————————————- 출력: 그러나이 방법은 큰 결함이 있습니다. 상태를 저장할 위치를 결정해야 합니다. 실제로 활동, 보기 및 조각 중에서만 선택할 수 있습니다.

예를 들어 활동에서 Singleton의 상태를 변경한 다음 닫지만 상태를 한 번 더 변경한 백그라운드 서비스가 있는 경우 앱이 시스템에 의해 종료되고 다시 시작되면 서비스에서 만든 마지막 업데이트가 손실됩니다. 그리고 물론 대부분의 경우 당신은 어떻게 든 (직접 여부) 상용구 코드를 많이 생성 싱글 톤의 상태에 영향을 미치는 모든 활동, 보기 및 조각에서 이러한 함수 (saveState, restoreState)를 호출해야합니다. Singleton 개체에서 clone() 메서드를 호출하면 클래스 로더를 사용하여 클래스를 로드하면 새 개체를 만들거나 기존 개체를 반환하는 경우 Singleton 클래스는 동일한 동작을 가지고 있습니까? 위에서 설명해 주시면 됩니다…. 문서의 끝에서 클래스를 스레드, 리플렉션 및 직렬화안전한 Singleton 클래스로 만들 수 있습니다. 이 싱글톤은 여전히 완벽한 싱글톤이 아닙니다. 복제를 사용하거나 여러 클래스 로더를 사용하여 Singleton 클래스의 두 개 이상의 인스턴스를 만들어 Singleton 원칙을 위반할 수 있습니다. 그러나 대부분의 응용 프로그램의 경우 Singleton의 위의 구현이 완벽하게 작동합니다. 조슈아 블로흐는 또한 제안 , Serialized의 경우Singleton 우리는 readResolve() 방법 -> 정적 공용 방법의 구현과 함께 모든 인스턴스 변수를 일시적으로 만들 필요가 있다 : 이것은 싱글 톤 객체에 대한 액세스의 전역 지점을 제공하고 반환 인스턴스를 클라이언트 호출 클래스에 호출합니다.

This entry was posted in Uncategorized. Bookmark the permalink.

Comments are closed.