java 싱글톤 예제

공개 정적 열망초기화싱글톤 getInstance(){반환 인스턴스; } } 공개 열거형 SingletonEnum { 인스턴스; 공공 정적 최종 문자열 ID =”0″; 개인 SingletonEnum(” {SingletonEnum 초기화”); } 공개 보이드 실행 (문자열 아르그) { / } 클래스 스니펫 { 공용 정적 보이드 메인( 문자열[] args) { System.out.println (싱글톤에넘.Id); } Singleton 패턴을 구현하는 지연 초기화 메서드는 전역 액세스 메서드에서 인스턴스를 만듭니다. 다음은 이 방법을 사용하여 Singleton 클래스를 만들기 위한 샘플 코드입니다. 이 빠른 기사에서는 일반 Java에서 Singletons를 구현하는 가장 인기있는 두 가지 방법에 대해 설명합니다. 직렬화와 마찬가지로 복제도 싱글톤 패턴을 파괴할 수 있습니까? singleton 클래스에서 개체 복제를 방지하는 예제 또는 시나리오가 있습니까? 멋진 예, 좋은 하나, 깨끗하고 간단 유지 주셔서 감사합니다 예를 들어, 당신은 당신의 데이터베이스에 대한 하나의 연결에 대한 라이센스가있는 경우 또는 JDBC 드라이버는 멀티 스레딩에 문제가있는 경우, Singleton은 하나의 연결이 만들어지거나 하나만 있는지 확인합니다 스레드는 한 번에 연결에 액세스할 수 있습니다. 이것은 싱글 톤 디자인 패턴에 대한 훌륭한 설명 중 하나입니다. 자세한 설명 에 대한 감사 판카이. 휘발성 수정자없이 Java의 다른 스레드가 sSoleInstance 변수의 절반 초기화 상태를 볼 수 있지만 휘발성 변수가 발생하기 전에 관계를 보장하면 모든 쓰기가 휘발성 sSoleInstance에서 발생합니다. sSoleInstance 변수읽기. 개인 정적 최종 열망초기화싱글톤 인스턴스 = 새 열망초기화싱글톤(); 나는 당신이 당신의 Singleton 클래스가 스레드 안전하지 않다는 것을 의미 예제 프로그램을 제공하시기 바랍니다 수 열거형 싱글 톤에 대해 받고 있지 않았다. 두 스레드 모두 getInstance() 메서드를 동시에 호출하며 sSoleInstance =null 조건은 두 스레드 모두에 대해 반환됩니다. 따라서 동일한 클래스의 두 개의 서로 다른 인스턴스가 만들어집니다. 그것은 싱글톤 원리를 깨뜨릴 것입니다.

정적 메서드가 있는 정적 클래스는 단일 메서드와 동일한 기능을 생성합니다. 싱글톤은 객체 지향 접근 방식을 사용하여 정의되기 때문에 일반적으로 싱글톤으로 작업하는 것이 좋습니다. Singleton은 하나의 인스턴스와 클래스의 기능을 관리하는 데 사용되기 때문에 “하나의 클래스, 하나의 책임” 원칙을 위반합니다. 생성자가 private으로 선언되면 단일 톤을 하위 분류할 수 없습니다. 여러 클래스 로더를 사용하는 경우 단일 의 여러 인스턴스가 생성 될 수 있습니다. Double 검사 잠금 방법을 사용하여 Singleton을 만드는 경우 이 문제를 극복할 수 있습니다. 당신은 싱글 톤 열거체 게으른 로드를 방지 설명 할 수 있습니까? 인스턴스 생성이 처음 액세스할 때 느리게 발생한다고 생각합니다. 공용 정적 보이드 main(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 패턴 구현에 대한 다양한 접근 방식과 구현에 대한 디자인 문제를 배웁니다. Singleton java.lang.IllegalArgumentException: sun.reflect.NativeConstructorAccessorImpl.newInstance0(네이티브 메서드)에서 잘못된 수의 인수 네이티브컨스토르액세스터임플.자바:62) 에서 sun.reflect.Delegating.DeAAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) at java.lang.reflect.constructor.newInstance(컨스트럭터.자바:408) com.vel.Test.main( Test.java:14) com.vel.Singleton@106d69c null —————————————————————————————————————————— 참고 : 싱글톤 클래스에서 readResolve()를 제거하면 예외를 throw하지 않습니다.

Geplaatst in Geen categorie