싱글턴 패턴이란 무엇인가요?
싱글턴 패턴은 클래스의 인스턴스가 싱글턴임을 보장하는 일반적인 디자인 패턴입니다.
싱글턴 모드의 장점:
(1) 우선 노출된 메소드를 통해 인스턴스가 아무리 자주 생성되더라도 생성된 객체는 동일한 인스턴스 객체임을 보장할 수 있습니다. 시스템 메모리
(2) 유연성. 모든 인스턴스 생성이 이 클래스에 의해 제어되므로 이 모든 클래스는 인스턴스화 프로세스를 유연하게 변경할 수 있습니다.
(3) 인스턴스 액세스 제어, 싱글톤 클래스가 액세스를 쉽게 제어할 수 있습니다.
싱글턴 모드의 단점:
(1) 싱글턴 모드에는 인터페이스가 없으며 확장이 쉽지 않습니다.
(2) 리플렉션 모드를 사용하면 싱글턴을 생성할 수 없습니다. , 그렇지 않으면 새로운 것이 인스턴스화됩니다.
(3) 게으른 싱글톤 모드를 사용할 때 스레드 안전 문제에 주의하세요.
싱글톤 모드 구현 방법:
Hungry 싱글톤 방법
package index; public class Superman { //空的构造器 private Superman(){} //实例化对象 private static Superman supermanInstance = new Superman(); //获取实例化对象的静态函数getSupermanInstance() public static Superman getSupermanInstance(){ return supermanInstance; } }
클래스가 로드될 때 배고픈 싱글톤 이것은 미리 새로운 것이며, 프로그램이 이 객체를 호출해야 하는지 여부에 관계없이 지연 로딩을 줄이기 위해 이미 준비되어 있습니다. 프로그램 로드에는 대부분의 경우 지연 로딩이 필요하므로 싱글톤을 구현하는 이 방법은 최선의 선택이 아닙니다.
Lazy 싱글톤 메소드(싱글 스레드 작성)
package index; public class Superman { //空的构造器 private Superman(){} //实例化对象;只声明 不使用new进行实例化 private static Superman supermanInstance = null; //获取实例化对象的静态函数getSupermanInstance() public static Superman getSupermanInstance(){ if(supermanInstance==null){ //如果为null的情况再进行实例化 supermanInstance = new Superman(); } return supermanInstance; } }
프로그램이 인스턴스화하지 않고 객체를 선언해야 할 경우 선언된 객체를 판단하는 정적 팩토리 메소드 getSupermanInstance()를 호출합니다. null인 경우 다시 인스턴스화합니다. 이 쓰기 방법은 지연된 로딩 효과를 얻을 수 있지만 스레드로부터 안전하지 않습니다. 동시에 정적 팩터리 메서드 getSupermanInstance()를 호출하는 두 개의 스레드가 있는 경우 이 클래스의 인스턴스는 싱글톤의 고유성을 파괴할 수 있습니다.
권장 튜토리얼: Java 튜토리얼
위 내용은 자바 싱글턴 패턴이 뭔가요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!