ซอร์สโค้ดคลาสซิงเกิลตันใน[[ภาษาจาวา]]
<source lang="java">
<font color="#0000c0"><b>public class </b></font><font color="#000000">Singleton </font><font color="#000000">{</font>
public class Singleton {
<font color="#ffffff"> </font><font color="#0000c0"><b>private static </b></font><font color="#000000">Singleton instance = </font><font color="#0000c0"><b>null</b></font><font color="#000000">;</font>
private static Singleton instance = null;
<font color="#ffffff"> </font>
<font color="#ffffff"> </font><font color="#0000c0"><b>private </b></font><font color="#000000">Singleton</font><font color="#000000">() {}</font>
private Singleton() {}
<font color="#ffffff"> </font>
<font color="#ffffff"> </font><font color="#0000c0"><b>public static </b></font><font color="#000000">Singleton getInstance</font><font color="#000000">() {</font>
public static Singleton getInstance() {
<font color="#ffffff"> </font><font color="#0000c0"><b>if </b></font><font color="#000000">(</font><font color="#000000">instance == </font><font color="#0000c0"><b>null</b></font><font color="#000000">) {</font>
if (instance == null) {
<font color="#ffffff"> </font><font color="#000000">instance = </font><font color="#0000c0"><b>new </b></font><font color="#000000">Singleton</font><font color="#000000">()</font><font color="#000000">;</font>
instance = new Singleton();
<font color="#ffffff"> </font><font color="#000000">}</font>
}
<font color="#ffffff"> </font>
<font color="#ffffff"> </font><font color="#0000c0"><b>return </b></font><font color="#000000">instance;</font>
return instance;
<font color="#ffffff"> </font><font color="#000000">}</font>
}
<font color="#ffffff"> </font>
<font color="#ffffff"> </font><font color="#0000c0"><b>public </b></font><font color="#c00000"><b>void </b></font><font color="#000000">doWork</font><font color="#000000">() {</font>
public void doWork() {
<font color="#ffffff"> </font><font color="#008000">// do something</font>
// do something
<font color="#ffffff"> </font><font color="#000000">}</font>
}
<font color="#000000">}</font>
}
</source>
การเรียกใช้งาน
<source lang="java">
<font color="#000000">Singleton.getInstance</font><font color="#000000">()</font><font color="#000000">.doWork</font><font color="#000000">()</font><font color="#000000">;</font>
Singleton.getInstance().doWork();
</source>
คลาสซิงเกิลตันแบบ ปลอดภัียปลอดภัยในการทำงานแบบ multi-threading โดย Bill Pugh ▼
<source lang="java">
public class ThreadSafeSingleton {
private ThreadSafeSingleton() {
}
private static class SingletonHolder {
▲คลาสซิงเกิลตันแบบปลอดภัียในการทำงานแบบ multi-threading โดย Bill Pugh
private static ThreadSafeSingleton instance = new ThreadSafeSingleton();
}
<font color="#0000c0"><b>public class </b></font><font color="#000000">static ThreadSafeSingleton </font><font color="#000000">getInstance() {</font>
return SingletonHolder.instance;
<font color="#ffffff"> </font><font color="#0000c0"><b>private </b></font><font color="#000000">ThreadSafeSingleton</font><font color="#000000">() {</font>
}
<font color="#ffffff"> </font><font color="#000000">}</font>
}
<font color="#ffffff"></font>
</source>
<font color="#ffffff"> </font><font color="#0000c0"><b>private static class </b></font><font color="#000000">SingletonHolder </font><font color="#000000">{</font>
<font color="#ffffff"> </font><font color="#0000c0"><b>private static </b></font><font color="#000000">ThreadSafeSingleton instance = </font><font color="#0000c0"><b>new </b></font><font color="#000000">ThreadSafeSingleton</font><font color="#000000">()</font><font color="#000000">;</font>
<font color="#ffffff"> </font><font color="#000000">}</font>
<font color="#ffffff"></font>
<font color="#ffffff"> </font><font color="#0000c0"><b>public static </b></font><font color="#000000">ThreadSafeSingleton getInstance</font><font color="#000000">() {</font>
<font color="#ffffff"> </font><font color="#0000c0"><b>return </b></font><font color="#000000">SingletonHolder.instance;</font>
<font color="#ffffff"> </font><font color="#000000">}</font>
<font color="#000000">}</font>
== อ้างอิง ==
|