c 設計模式之單例模式

2022-02-21 05:52:22 字數 2744 閱讀 4300

單例模式:乙個類在記憶體中只有乙個物件(例項),並且提供乙個可以全域性訪問或者獲取這個物件的方法。

這兩天學的,寫了個小例子,問了同事一些關於執行緒的問題,還有從網上查了一些資料。還犯了一些低階的錯誤。

vs2017控制台輸出文字亂碼,從網上找了一些方法不管用,最後發現是自己新建專案選錯模板了,選擇了.net core的模板,所以才會輸出亂碼,大家一定要吸取教訓。

直接上**

演示類,person.cs

public

class

person

",gettype().name);

}public

static

person getinstance()

}

客戶端**:

", object.referenceequals(person1, person2));

}

輸出結果:

只輸出了一次,兩個物件引用相等。說明單例模式沒問題。

高階:

public

class

person "

,gettype().name);

}public

static

person getinstance()

}

客戶端呼叫**:

);

var thread2 = new thread(() => );

var thread3 = new thread(() => );

thread1.start();

thread2.start();

thread3.start();

thread.sleep(

1000);//

等待子執行緒完成

console.writeline("

person1 == person2:

", object

.referenceequals(person1, person2));

}

輸出結果:

輸出了多次,引用也不相等。說明多次例項化這個類,單例模式寫的不完全正確,那讓我們加上執行緒安全驗證。

繼續高階:

public

class

person "

,gettype().name);

}//////

獲取類唯一的例項物件

/// public

static

person getinstance()}}

return

_person;}}

客戶端呼叫**:

);

var thread2 = new thread(() => );

var thread3 = new thread(() => );

thread1.start();

thread2.start();

thread3.start();

thread.sleep(

1000);//

等待子執行緒完成

console.writeline("

person1 == person2:

", object

.referenceequals(person1, person2));

}

輸出結果:

輸出一次,引用相等,說明單例模式成功,執行緒安全已經加上。

高階2

可以使用靜態建構函式作為單例模式:

public

class

person

",gettype().name);

}//////

靜態建構函式,只執行一次

/// static

person()

//////

獲取類的例項

/// public

static

person getinstance()

}

客戶端**:

);

var thread2 = new thread(() => );

var thread3 = new thread(() => );

thread1.start();

thread2.start();

thread3.start();

thread.sleep(

1000);//

等待子執行緒完成

console.writeline("

person1 == person2:

", object

.referenceequals(person1, person2));

}

輸出結果:

輸出一次,引用相等,靜態建構函式也可以作為單例模式實現的一種方法。

C 設計模式之單例模式

在遊戲開發過程中,我們時常會遇到單例模式的運用場景。比如你遊戲當中的最終boss,你希望你的boss只能有乙個,所以這裡你就可以用單例模式 那麼什麼是單例模式呢?看下面的 分析。include include using namespace std class singleton public st...

C 設計模式之單例模式

設計模式是以理論的高度,總結了開發過程中的一多種不同的方法,在各種設計模式中,它們都有著不同實現方式,所起的作用也不相同,我最近看了部分設計模式,主要是以我自己的理解來闡述對它們的看法。我們可以看到單例的大概實現是很簡單的。幾個需要注意的地方是 只有當我們的建構函式為私有時,此時,我們在類外部就不能...

C 設計模式之 單例模式

單例模式,故名思義,其意圖是保證乙個類只有乙個例項,並提供乙個訪問它的全域性訪問點,該例項被所有的程式模組共享.在很多地方要用到這種設計模式,如系統的日誌輸出,作業系統的視窗,乙個pc連乙個鍵盤等.單例模式有許多實現方法.第一次呼叫該類例項的時候才產生乙個新的該類例項,並在以後僅返回此例項,需要加鎖...