제3조: 사유화 구조기나 매거 유형 강화singleton 속성
2653 단어 Singleton
두 가지 방법의 전제는 모두 사유화 구조기인 다음에 서로 다른 방식으로 대상을 얻는 것이다.
첫 번째: 공공 정적 변수를 통해 획득
public class Elivs{
//
private Elivs(){}
//
public static final Elivs INSTANCE = new Elivs();
}
두 번째: 정적 방법으로 획득
public class Elivs{
//
private Elivs(){}
//
private static final Elivs INSTANCE = new Elivs();
//
public static Elivs getInstance(){
return instance();
}
}
첫 번째 정적 영역을 통해 대상을 얻는 방식은 구성 클래스의 구성원들의 성명이 이 클래스가singleton이라는 것을 명확하게 나타내는 데 있다. 공유된 정적 영역은final이기 때문에 이 영역은 항상 같은 대상 인용을 포함할 것이다.
PS:
공유역은 성능에 있어서 아무런 장점도 없다. 현대의 JVM은 정적 공장 방법의 호출을 내연화할 수 있다.
두 번째 공장 방법의 장점은 그가 유연성을 제공하여 방법에서 더 많은 조작을 확장할 수 있고 API를 바꾸지 않는 전제에서 클래스를 Singleton으로 만드는지 여부를 바꿀 수 있다는 것이다.또한 공장 방법을 통해 대상을 얻으면, 대상을 만들 때의 확장을 위해 범형을 정의할 수 있습니다.
java1.5 다음에 사실은 세 번째 싱leton의 모델을 제공했는데 그것이 바로 Enum 매거 유형이다.
개별 요소가 포함된 열거 유형을 작성할 수 있습니다.
public enum Elvis{
INSTANCE;
public void leaveTheBuilding(){....}
}
이런 방식은 공유역 방법과 비슷하지만 더욱 간결하고 무상으로 서열화 메커니즘을 제공하여 여러 차례의 실례화를 절대 방지한다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
[Java]기본6~15강 까지의 내용 정리클래스 메소드 사용 방법 메소드 실행 순서 over(넘치다)+load(저장하다)로, 메소드의 이름이 같으면서 매개변수의 자료형,갯수, 순서 중 하나 이상이 다른 경우 동일한 메소드 명으로 실행 가능 생성자 클래스 명...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.