單例模式與多例情況-君臣關(guān)系(創(chuàng)建型)

這個(gè)模式是很有意思孽锥,而且比較簡(jiǎn)單嚼黔,但是我還是要說(shuō)因?yàn)樗褂玫氖侨绱说膹V泛, 如此的有人緣惜辑,單例就是單一唬涧、獨(dú)苗的意思,那什么是獨(dú)一份呢盛撑?你的思維是獨(dú)一份碎节,除此 之外還有什么不能山寨的呢?我們舉個(gè)比較難復(fù)制的對(duì)象:皇帝 中國(guó)的歷史上很少出現(xiàn)兩個(gè)皇帝并存的時(shí)期撵彻,是有钓株,但不多,那我們就認(rèn)為皇帝是個(gè)單 例模式陌僵,在這個(gè)場(chǎng)景中轴合,有皇帝,有大臣碗短,大臣是要上朝參見(jiàn)皇帝的受葛,今參拜的皇帝 應(yīng)該和昨、前的一樣(過(guò)渡期的不考慮偎谁,找茬哦)总滩,大臣磕完頭后,抬頭一看巡雨,嗨闰渔, 還是昨那個(gè)皇帝,單例模式铐望,絕對(duì)的單例模式: 先定一個(gè)皇帝:

/**
* 中國(guó)的歷史上一般都是一個(gè)朝代一個(gè)皇帝冈涧,有兩個(gè)皇帝的話,必然要PK出一個(gè)皇帝出來(lái) 
 */ 
public class Emperor {  private static Emperor emperor = null;  //定義一個(gè)皇帝放在那里正蛙,然 后給這個(gè)皇帝名字 
  
 private Emperor(){   //世俗和道德約束你督弓,目的就是不讓你產(chǎn)生第二個(gè)皇帝 
 } 
  
 public static Emperor getInstance(){   if(emperor == null){  //如果皇帝還沒(méi)有定義,那就定一個(gè) 
   emperor = new Emperor(); 
  } 
  return emperor; 
 } 
   //皇帝叫什么名字呀 
 public static void emperorInfo(){   System.out.println("我就是皇帝某某某....");   
 } 
} 

然后定義大臣:

/** 
* @author cbf4Life cbf4life@126.com 
* I'm glad to share my knowledge with you all.  * 大臣是要面見(jiàn)皇帝乒验,今見(jiàn)的皇帝和昨的愚隧,前不一樣那就出問(wèn)題了! 
*/ 
@SuppressWarnings("all") 
public class Minister { 

/** 
 * @param args 
 */ 
public static void main(String[] args) {   //第一 
 Emperor  emperor1=Emperor.getInstance();   emperor1.emperorInfo();  //第一見(jiàn)的皇帝叫什么名字呢锻全? 
    //第二 
 Emperor  emperor2=Emperor.getInstance(); 
 Emperor.emperorInfo(); 
    //第三 
 Emperor  emperor3=Emperor.getInstance(); 
 emperor2.emperorInfo();  
    //三見(jiàn)的皇帝都是同一個(gè)人狂塘,榮幸吧! 
} 
} 

看到?jīng)]鳄厌,大臣見(jiàn)到的都是同一個(gè)皇帝睹耐,不會(huì)產(chǎn)生錯(cuò)亂情況,反正都是一個(gè)皇帝部翘,是 好是壞就這一個(gè)硝训,只要提到皇帝,大家都知道指的是誰(shuí)新思,清晰窖梁,而又明確。問(wèn)題是這是通常 情況夹囚,還有個(gè)例的纵刘,如同一個(gè)時(shí)期同一個(gè)朝代有兩個(gè)皇帝,怎么辦荸哟?

多例的情況

/** 
 * 
 * 中國(guó)的歷史上一般都是一個(gè)朝代一個(gè)皇帝假哎,有兩個(gè)皇帝的話瞬捕,必然要PK出一個(gè)皇帝出來(lái)。
  * 問(wèn)題出來(lái)了:如果真在一個(gè)時(shí)間舵抹,中國(guó)出現(xiàn)了兩個(gè)皇帝怎么辦肪虎?比如明朝土木堡之變后,
  * 明英宗被俘虜惧蛹,明景帝即位扇救,但是明景帝當(dāng)上皇帝后樂(lè)瘋了,竟然忘記把他老哥明英宗 削為上皇香嗓,  * 也就是在這一個(gè)多月的時(shí)間內(nèi)迅腔,中國(guó)竟然有兩個(gè)皇帝! 
 *  
 */ 
@SuppressWarnings("all") 
public class Emperor {  private static int maxNumOfEmperor = 2;  //最多只能有連個(gè)皇帝 
 private static ArrayList emperorInfoList=new ArrayList(maxNumOfEmperor);  //皇帝叫什么名字 
 private static ArrayList emperorList=new ArrayList(maxNumOfEmperor); //裝皇帝的列表靠娱;  private static int countNumOfEmperor =0;  //正在被人尊稱(chēng)的是那個(gè)皇 帝 
   //先把2個(gè)皇帝產(chǎn)生出來(lái) 
 static{   //把所有的皇帝都產(chǎn)生出來(lái) 
  for(int i=0;i<maxNumOfEmperor;i++){      emperorList.add(new Emperor("皇"+(i+1)+"帝")); 
  } 
} 
   //就這么多皇帝了沧烈,不允許再推舉一個(gè)皇帝(new 一個(gè)皇帝) 
 private Emperor(){   //世俗和道德約束你,目的就是不讓你產(chǎn)生第二個(gè)皇帝 
 } 
  
 private Emperor(String info){ 
  emperorInfoList.add(info); 
 } 
  
 public static Emperor getInstance(){ 
  Random random = new Random();   countNumOfEmperor = random.nextInt(maxNumOfEmperor);  //隨機(jī) 拉出一個(gè)皇帝像云,只要是個(gè)精神領(lǐng)袖就成 
  return (Emperor)emperorList.get(countNumOfEmperor);   
 } 
   //皇帝叫什么名字呀 
 public static void emperorInfo(){ 
  System.out.println(emperorInfoList.get(countNumOfEmperor));
 } 
}

那大臣是比較悲慘了掺出,兩個(gè)皇帝呀,兩個(gè)老子呀苫费,怎么拜呀汤锨,不管了,只要是個(gè)皇帝成了:


/** 
 * 大臣們悲慘了百框,一個(gè)皇帝都伺候不過(guò)來(lái)了闲礼,現(xiàn)在還來(lái)了兩個(gè)個(gè)皇帝  * TND,不管了铐维,找到個(gè)皇帝柬泽,磕頭,請(qǐng)按就成了嫁蛇! 
 */ 
@SuppressWarnings("all") 
public class Minister { 
 
 /** 
  * @param args 
  */ 
 public static void main(String[] args) { 
int ministerNum =10; //10個(gè)大臣 
   
  for(int i=0;i<ministerNum;i++){ 
   Emperor emperor = Emperor.getInstance();    System.out.print("第"+(i+1)+"個(gè)大臣參拜的是:"); 
   emperor.emperorInfo(); 
  }   
 } 
} 



這里說(shuō)一下锨并,一個(gè)類(lèi)可創(chuàng)建的實(shí)例。它的數(shù)目可以分為四種情況:
0睬棚,1第煮,多,無(wú)窮
我們正常的類(lèi)即public class 一般都是最后一種情況抑党,可以創(chuàng)建無(wú)窮多個(gè)
而像Math這樣的工具類(lèi)(一般它的構(gòu)造方法為私有或者是一個(gè)沒(méi)有實(shí)現(xiàn)類(lèi)的接口)包警,我們只需要它的靜態(tài)方法作為工具方法去使用,故而無(wú)需創(chuàng)建它的實(shí)例底靠,所以是0個(gè)害晦。

1和多 在本文中對(duì)應(yīng)單例模式多例的情況。
在傳統(tǒng)的設(shè)計(jì)模式中暑中,并沒(méi)有多例模式這一說(shuō)壹瘟,我想這大概是因?yàn)樗蛦卫穷?lèi)似的鲫剿,都是創(chuàng)建特定數(shù)目的實(shí)例,只不過(guò)數(shù)據(jù)結(jié)構(gòu)不同罷了稻轨,前者getInstance是得到本類(lèi)的一個(gè)對(duì)象灵莲,而后者則是多個(gè)本類(lèi)實(shí)例對(duì)象組成的集合,實(shí)現(xiàn)手段也是接近的澄者。
但是這種多例的情況在實(shí)際開(kāi)發(fā)中也是會(huì)被用到的,比如對(duì)象池的場(chǎng)合请琳。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末粱挡,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子俄精,更是在濱河造成了極大的恐慌询筏,老刑警劉巖,帶你破解...
    沈念sama閱讀 210,978評(píng)論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件竖慧,死亡現(xiàn)場(chǎng)離奇詭異嫌套,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)圾旨,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 89,954評(píng)論 2 384
  • 文/潘曉璐 我一進(jìn)店門(mén)踱讨,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人砍的,你說(shuō)我怎么就攤上這事痹筛。” “怎么了廓鞠?”我有些...
    開(kāi)封第一講書(shū)人閱讀 156,623評(píng)論 0 345
  • 文/不壞的土叔 我叫張陵帚稠,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我床佳,道長(zhǎng)滋早,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 56,324評(píng)論 1 282
  • 正文 為了忘掉前任砌们,我火速辦了婚禮杆麸,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘浪感。我一直安慰自己角溃,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,390評(píng)論 5 384
  • 文/花漫 我一把揭開(kāi)白布篮撑。 她就那樣靜靜地躺著减细,像睡著了一般。 火紅的嫁衣襯著肌膚如雪赢笨。 梳的紋絲不亂的頭發(fā)上未蝌,一...
    開(kāi)封第一講書(shū)人閱讀 49,741評(píng)論 1 289
  • 那天驮吱,我揣著相機(jī)與錄音,去河邊找鬼萧吠。 笑死左冬,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的纸型。 我是一名探鬼主播拇砰,決...
    沈念sama閱讀 38,892評(píng)論 3 405
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼狰腌!你這毒婦竟也來(lái)了除破?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 37,655評(píng)論 0 266
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤琼腔,失蹤者是張志新(化名)和其女友劉穎瑰枫,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體丹莲,經(jīng)...
    沈念sama閱讀 44,104評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡光坝,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,451評(píng)論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了甥材。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片盯另。...
    茶點(diǎn)故事閱讀 38,569評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖洲赵,靈堂內(nèi)的尸體忽然破棺而出土铺,到底是詐尸還是另有隱情,我是刑警寧澤板鬓,帶...
    沈念sama閱讀 34,254評(píng)論 4 328
  • 正文 年R本政府宣布悲敷,位于F島的核電站,受9級(jí)特大地震影響俭令,放射性物質(zhì)發(fā)生泄漏后德。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,834評(píng)論 3 312
  • 文/蒙蒙 一抄腔、第九天 我趴在偏房一處隱蔽的房頂上張望瓢湃。 院中可真熱鬧,春花似錦赫蛇、人聲如沸绵患。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,725評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)落蝙。三九已至,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間筏勒,已是汗流浹背移迫。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 31,950評(píng)論 1 264
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留管行,地道東北人厨埋。 一個(gè)月前我還...
    沈念sama閱讀 46,260評(píng)論 2 360
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像捐顷,于是被迫代替她去往敵國(guó)和親荡陷。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,446評(píng)論 2 348

推薦閱讀更多精彩內(nèi)容

  • 字節(jié)跳動(dòng)飛書(shū)內(nèi)推迅涮!北京废赞、杭州、武漢逗柴、廣州蛹头、深圳顿肺、上海戏溺,六大城市等你來(lái)投。感興趣的朋友可以私我咨詢(xún)&內(nèi)推屠尊,也可以通過(guò)...
    盧卡斯嗶嗶嗶閱讀 643評(píng)論 0 1
  • 單例模式(SingletonPattern)一般被認(rèn)為是最簡(jiǎn)單旷祸、最易理解的設(shè)計(jì)模式,也因?yàn)樗暮?jiǎn)潔易懂讼昆,是項(xiàng)目中最...
    成熱了閱讀 4,228評(píng)論 4 34
  • 設(shè)計(jì)模式概述 在學(xué)習(xí)面向?qū)ο笃叽笤O(shè)計(jì)原則時(shí)需要注意以下幾點(diǎn):a) 高內(nèi)聚托享、低耦合和單一職能的“沖突”實(shí)際上,這兩者...
    彥幀閱讀 3,735評(píng)論 0 14
  • 楊絳先生百歲之際的箴言:“我們?cè)绱丝释\(yùn)的波瀾,到最后才發(fā)現(xiàn):人生最曼妙的風(fēng)景既峡,竟是內(nèi)心的淡定與從容……我們?cè)?..
    清雅_(tái)1314閱讀 931評(píng)論 26 18
  • 來(lái)到這個(gè)世上羡榴,沒(méi)有人應(yīng)該為你做什么 拒接長(zhǎng)大,逃避責(zé)任运敢,是你自己在放棄自己 你可以在我走近的一剎那關(guān)掉聊天工具 也...
    堯色閱讀 86評(píng)論 0 0