單例模式的應用,設計模式 之 單例模式

2025-02-05 21:35:15 字數 1465 閱讀 6292

1樓:網友

不是很明白 給你個例子,你看看能從中找到點什麼吧。

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

public class singleton/在自己內部定義自己乙個例項,是不是很奇怪?

注意這是private 只供內部呼叫。

private static singleton instance = new singleton();

這裡提供了乙個供外部訪問本class的靜態方法public static singleton getinstance()

return instance;

設計模式 之 單例模式

2樓:金色盛典歷史

1. 定義。

單例模式指的是乙個類,在全域性範圍內(整個系統中)有且只能有乙個例項存在。即該類本身負責提供一種訪問其唯一物件的方式,不對外提供公共的建構函式(禁用預設公共建構函式),對於該類的例項化由它自己在類的內部進行維護!

2. 優缺點。

優點。1. 最大程度的減少了物件的建立和銷燬的次數,從而降低的垃圾**的次數。

2. 節約了系統資源,尤其是記憶體資源。

缺點。1. 不能繼承,不能被外部例項化。

2. 類干預了外部類的使用(外部實用類不能隨意例項化),而不再僅僅專注於內部的邏輯(與單一職責模式有矛盾)

3. 使用場景。

有頻繁的例項化後又銷燬的情況,適合考慮使用單例模式,如記錄日誌的log物件。

建立物件需要消耗過多的系統資源,但又經常用到的資源,如資料庫連線。

4. 框架中的應用。

5. 實現方式。

單例模式有多種實現方式,要考慮到多執行緒下的安全性,其每種實現方式如下所示:

以上方式,如果存在多個執行緒同時訪問getinstance()時,由於沒有鎖機制,會導致例項化出現兩個例項的情況,因此,在多執行緒環境下時不安全的。

如上**所示,在getinstance()方法上新增了同步鎖。但是該方法雖然解決了執行緒安全的問題,但卻也帶來了另外的乙個問題,就是每次獲取物件時,都要先獲取鎖,併發效能很差,還需要繼續優化!

該方法將方法上的鎖去掉了,避免了每次呼叫該方法都要獲取鎖的操作,從而提公升了併發效能,同時在方法內部使用鎖,進而解決了併發的問題,從而解決了上面**併發安全+效能低效**的問題,是個不錯的實現單例的方式。

該方式雖然簡單也安全,但是會造成再不需要例項時,產生垃圾物件,造成資源狼糞,因此,一般不使用。

這種方式可以達到跟**雙重校驗鎖**一樣的效果,但只適用於靜態域的情況,雙重校驗鎖可在例項域需要延遲初始化時使用。

這是實現單例模式的最佳方法,更加簡潔,自動支援序列化,防止多次例項化,非常高效!(強烈推薦使用)

6.引用。

C中如何應用MVC設計模式

所謂mvc 是指三層式開發 即 表現層也就是常說的頁面 美觀 排版等使用者所看到最終結果的頁面邏輯層 這層是指進行頁面操作時候的各種邏輯 資料層 是指所有的對資料庫 資料的整理部分 最好運用分檔案分模組來實現。怎麼判斷一個c 專案是不是mvc模式的?mvc是模型copy 檢視 控制器 mvc是一個設...

工程總承包模式中的設計 施工總承包模式(DB)是否包含施工

不包括。db模式沒有像傳統模式將工程分割為設計與施工兩種角色與責任,而取而代之的,業主將工程直接發包給負責設計與施工的總承包商,成為單一的責任劃分。承包商必須就工程上所有包含設計單位 施工單位業務的執行與協調整合工作向業主負責,即使有些工作是以分包方式進行,但承包商仍然必須對該分包的工作向業主負責。...

如何評價 一例到底的案例教學模式

怎樣進行教學案例評析 一 教學案例及基本特徵 一 教學案例 教學案例是從教育教學實踐活動中挑選出來例項,在被描述的具體情境中包含一個或多個引人入勝的問題,同時也包含有解決這些問題的方法和技巧,有具體情境的介紹和描述,也有一定的理論思考和核對實際活動的反思。目前對教學案例的描述,主要有以下四種說法 1...