單件模式,單件意味著唯一,我們建立的類的例項是唯一的。唯一的處理印表機,訊息佇列,登錄檔等等.......
uml圖:
單件模式看來簡單,其實不然。包括什麼雙重加鎖(多執行緒要求),延遲例項化等等,具體在terrylee的blog上有詳細的描述,本文不再羅嗦。
單件模式沒有公開的建構函式,要實現物件的例項化只能依靠靜態的getinstance方法。在getinstance方法中判斷物件是否存在,存在則返回該物件,不存在就例項化乙個物件返回。
dota中時間是唯一的,以下的例子是對白天黑夜的控制,也就是我們的夜魔技能。
測試**:
dotapatternlibrary.singleton.gametime gtobj = dotapatternlibrary.singleton.gametime.getinstance();
landpyform.form.outputresult("game時間型別:" + gtobj.timetype);
thread balanargamerthread = new thread(new threadstart(balanardarktime));
thread akashagamerthread = new thread(new threadstart(akashagettimetype));
balanargamerthread.start();
akashagamerthread.start();
//////
暗夜魔王放大
///public
void
balanardarktime()
landpyform.form.outputresult(
"夜魔(balanar)大招時間到");
dotapatternlibrary.singleton.gametime gtobjnew
=dotapatternlibrary.singleton.gametime.getinstance();
gtobjnew.timetype
=dotapatternlibrary.singleton.timetypevalue.daytime;
}///
///痛苦女王獲得時間型別
///public
void
akashagettimetype()
}完整**:
using
system;
using
system.collections.generic;
using
system.linq;
using
system.text;
using
dotapatternlibrary.attribute;
namespace
dotapatternlibrary.singleton
public
static
singleton getinstance()
}return
singleton;}}
public
class
timetypevalue
public
class
gametime
set}
private
gametime()
public
static
gametime getinstance()
}return
gametime;}}
}
DOTA版設計模式 外觀模式
外觀模式,不知道你是否會碰到這樣的場景,公司要開會了,由你負責布置會場,你需要做的工作有 1.把窗簾拉下來。2.擺好椅子。3.降下投影幕布。4.開啟投影儀。5.太煩了,有時你甚至少做了一樣,別怕,如果有了外觀模式就可以高枕無憂了。簡單的說,外觀模式就是把1 5條甚至更多的操作抽象為乙個操作,那就是 ...
DOTA版設計模式 組合
組合模式,本質上就是樹的一種 實現。把所有節點統一化,犧牲類的清晰性來使得遍歷簡化。遍歷依靠迭代器,請參考迭代器一章。uml圖 composite抽象類介面如下,包含孩子節點,增加孩子節點的方法,刪除孩子節點的方法,以及操作。public abstract class composite publi...
Python版設計模式之單例模式
在某些場景下,我們希望實體類無論例項化多少次都只會產生乙個實體物件,這時候就需要使用單例模式。經常使用的場景就是全域性配置類。使用函式定義裝飾器 def singletons cls 定義乙個單例裝飾器,使用dict儲存定義好的實體,key為class的位址而不是名字,這樣同名類也不會衝突 inst...