簡體中文 | 繁體中文

大話設計模式-----第53章


青春逝去 一百零一條禁令校規 於慕橙的幸福生活 原來愛情很快樂 吸血盟:我與伯爵有個約會 庶女棄妃 湖邊有棵許願樹 王爺被踹洞房外:有種,休我! 極品雷神在異世 武魂王座 修仙風雲傳 侯門喜事 山寨大小姐:搶個妖夫來壓寨 超時空進化 我嫁給了山村老屍 溫柔校草霸上失憶女 丞相有禾事 奸臣 守望軍魂 迷室驚魂
第53章

小A:“單體模式一般有哪些方法?”

大B:“單體模式主要作用是保證在Java應用程式中,一個Class只有一個例項存在。一般有三種方法,下面我就具體來說說這三種方法吧。”

1、定義一個類,它的建構函式為private的,所有方法為static的。如java.lang.Math其他類對它的引用全部是透過類名直接引用。

例如:

publicfinalclassMath{

/**

*Dontletanyoneinstantiatethisclass.

*/

privateMath(){}

publicstaticintround(floata){

return(int)floor(a+0.5f);

}

……

}

2、定義一個類,它的建構函式為private的,它有一個static的private的該類變數,在類初始化時例項話,透過一個public的getInstance方法獲取對它的引用,繼而呼叫其中的方法。

例如:

publicclassRuntime{

privatestaticRuntimecurrentRuntime=newRuntime();

publicstaticRuntimegetRuntime(){

returncurrentRuntime;

}

……

}

3、定義一個類,它的建構函式為private的,它有一個static的private的boolean變數,用於表示是否有例項存在。

例如:

classPrintSpooler{

//thisisaprototypeforaprinter-spoolerclass

//suchthatonlyoneinstancecaneverexist

staticboolean

instanceflag=false;//trueif1instance

publicPrintSpooler()throwsSingletonException

{

if(instanceflag)

thrownewSingletonException(“Onlyonespoolerallowed”);

else

instanceflag=true;//setflagfor1instance

System.out.println(“spooleropened”);

}

//——

publicvoidfinalize()

{

instanceflag=false;//clearifdestroyed

}

}

推薦小說