자바 디자인 모델 의 "단일 예"
단일 모델 은 상대 적 으로 흔히 볼 수 있 는 디자인 모델 이다.그 본질은 하나의 클래스 대상 을 같은 JVM 에서 하나의 인 스 턴 스 만 있 게 하 는 것 이다.이런 디자인 모델 은 자주 공장 모델 과 배합 하여 사용한다.
예시
다음은 스 레 드 안전 을 고려 하지 않 은 예 입 니 다. [codesyntax lang = "자바" lines = "normal"]
package org.suren.pattern;
/**
* @author suren
* @date 2015-4-1
*
* 、 。
* , 3 5 。
*
* http://surenpi.com
*/
public class SingleTest
{
/**
* @param args
*/
public static void main(String[] args)
{
int count = 10;
for(int i = 0; i < count; i++)
{
new Thread(){
public void run()
{
System.out.println(Single.getInstance());
}
}.start();
}
for(int i = 0; i < count; i++)
{
new Thread(){
public void run()
{
System.out.println(Single.getInstance());
}
}.start();
}
}
}
/**
* @author suren
* @date 2015-4-1
*
* http://surenpi.com
*/
class Single
{
private static Single single = null;
// ,
private Single(){}
/**
*
* @return
*/
public static Single getInstance()
{
if(single == null)
{
single = new Single();
}
return single;
}
}
[/codesyntax] 다음은 스 레 드 안전 의 예 입 니 다. [codesyntax lang = "java" lines = "normal"]
package org.suren.pattern.safe1;
/**
* @author suren
* @date 2015-4-1
*
* 、 。
* , 3 5 。
*
* http://surenpi.com
*/
public class SafeSingleTest
{
/**
* @param args
*/
public static void main(String[] args)
{
int count = 5000;
final long begin = System.currentTimeMillis();
for(int i = 0; i < count; i++)
{
new Thread(){
public void run()
{
System.out.println(Single.getInstance());
System.out.println(System.currentTimeMillis() - begin);
}
}.start();
}
for(int i = 0; i < count; i++)
{
new Thread(){
public void run()
{
System.out.println(Single.getInstance());
System.out.println(System.currentTimeMillis() - begin);
}
}.start();
}
}
}
/**
* @author suren
* @date 2015-4-1
*
* http://surenpi.com
*/
class Single
{
private static Single single = null;
// ,
private Single(){}
/**
*
* @return
*/
public static synchronized Single getInstance()
{
if(single == null)
{
single = new Single();
}
return single;
}
}
[/codesyntax] 참고 하 다
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Is Eclipse IDE dying?In 2014 the Eclipse IDE is the leading development environment for Java with a market share of approximately 65%. but ac...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.