DOTA版設計模式 單件模式

2022-02-22 20:48:53 字數 1813 閱讀 8930

單件模式,單件意味著唯一,我們建立的類的例項是唯一的。唯一的處理印表機,訊息佇列,登錄檔等等.......

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...