單子(Singleton)設(shè)計(jì)模式:在整個(gè)應(yīng)用中只有一個(gè)實(shí)例存在,創(chuàng)建的兩個(gè)實(shí)例都指向同一個(gè)對(duì)象。
創(chuàng)建的步驟:
1.構(gòu)造器要私有。
2.用一個(gè)私有的靜態(tài)變量引用實(shí)例。
3.用一個(gè)公有靜態(tài)方法獲得實(shí)例。
如:
/*? 一。為什么要實(shí)現(xiàn)單一模式,是因?yàn)槲覄?chuàng)建的兩個(gè)實(shí)例都指向同一個(gè)對(duì)象
??? 二。要實(shí)現(xiàn)單一模式需要進(jìn)行下面三步:
???? 1.構(gòu)造器私有
???? 2。用一個(gè)私有,靜態(tài)變量引用實(shí)例
???? 3。提供一個(gè)公有。靜態(tài)方法獲得實(shí)例
*/
public class SingletonPattern
{
?private int r;
?//用一個(gè)私有,靜態(tài)變量引用實(shí)例
?private static SingletonPattern sp;?
?? //構(gòu)造器設(shè)為了私有
?private SingletonPattern()
?{
??r = (int)(10*(java.lang.Math.random()));
?}?
? //提供了一個(gè)公有,靜態(tài)方法獲得實(shí)例
?public static SingletonPattern getInstance()
?{
??if (sp==null)
??{
???sp = new SingletonPattern();
??}
??return sp;
?}????????
?public double getR()
?{
??return r;
?}
?
?public static void main(String args[])
?{
??SingletonPattern sp1 = SingletonPattern.getInstance();
??SingletonPattern sp2 = SingletonPattern.getInstance();
??System.out.println(sp1.getR());
??System.out.println(sp2.getR());
??
?}?
}