JAVASE 단일 설계 모델에 대한 간단한 설명
1. 단례 디자인 모델.
해결 문제: 메모리에 있는 대상의 유일성을 보증할 수 있다.(단일 인스턴스)
단일 디자인 모델 사용 수요: 여러 프로그램이 같은 설정 정보 대상을 사용해야 할 때 이 대상의 유일성을 확보해야 한다.
어떻게 대상의 유일성을 보증합니까?해결 단계:
1.다른 프로그램이 new로 이 대상을 만드는 것을 허용하지 않습니다. 1.이런 구조 함수를 사유화하다.
2.이 클래스에서 이 클래스의 실례를 만듭니다. 2.new를 통해 이 클래스에서 이 클래스의 대상을 만듭니다.
3.다른 프로그램이 이 대상을 얻을 수 있도록 대외적으로 방법을 제공한다. 3.만든 대상을 되돌려주는 공유 방법을 정의합니다.
// ( )
class Single// , 。
{
private static Single s = new Single();
private Single(){}
public static Single getInstance()
{
return s;
}
}
// ( , , !)
class Single2// , , getInstance , 。
// 。
{
private static Single2 s = null;
private Single2(){}
public static Single2 getInstance()
{
if(s==null)
s = new Single2();
return s;
}
}
//
class SingleDemo
{
public static void main(String[] args)
{
Single s1 = Single.getInstance();
Single s2 = Single.getInstance();
System.out.println(s1==s2);
// Single ss = Single.s; // , Single.getInstance(); 。
}
}
굶주림식 단례류는 자신이 탑재될 때 자신을 실례화한다.설령 캐리어가 정적이라 하더라도, 굶주린 한식 단례류가 탑재될 때, 여전히 자신을 실례화할 것이다.단지 자원 이용 효율의 측면에서 볼 때, 이것은 게으름뱅이식 단례류보다 약간 떨어진다.속도와 반응 시간의 측면에서 보면 게으름뱅이식 단례류보다 조금 낫다.3. 등록식:
코드:
package pattern.singleton;import java.util.HashMap;import java.util.Map;
// .
// Spring , , 。
public class Singleton3 {
private static Map<String,Singleton3> map = new HashMap<String,Singleton3>();
static{
Singleton3 single = new Singleton3();
map.put(single.getClass().getName(), single);
}
//
protected Singleton3(){}
// ,
public static Singleton3 getInstance(String name) {
if(name == null) {
name = Singleton3.class.getName();
System.out.println("name == null"+"--->name="+name);
}
if(map.get(name) == null) {
try {
map.put(name, (Singleton3) Class.forName(name).newInstance());
} catch (InstantiationException e) {
e.printStackTrace();
} catch (IllegalAccessException e) {
e.printStackTrace();
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
}
return map.get(name);
}
//
public String about() {
return "Hello, I am RegSingleton.";
}
public static void main(String[] args) {
Singleton3 single3 = Singleton3.getInstance(null);
System.out.println(single3.about());
}
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
자바 논리 식 계산 및 판단텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.