單例模型 懶漢 餓漢

2021-09-09 05:07:56 字數 774 閱讀 5470

單例模型

餓漢模式:

#include 

using namespace std;

class a

};static b b;

return b.a;

}void show()

private:

a(){}

};int main()

懶漢模式:

#include using

namespace

std;

class

a

return

a; }

void

show()

private

:

static a *a;

a(){}

};a * a::a =null;

intmain()

單例中懶漢和餓漢的本質區別在於以下幾點:

1、餓漢式是執行緒安全的,在類建立的同時就已經建立好乙個靜態的物件供系統使用,以後不再改變。懶漢式如果在建立例項物件時不加上同步安全控制則會導致對物件的訪問不是執行緒安全的。

2、從實現方式來講他們最大的區別就是懶漢式是延時載入,它是在需要的時候才建立物件,而餓漢式在程式啟動的時候就會建立,餓漢式無需關注多執行緒問題、寫法簡單明瞭、能用則用。但是它是載入類時建立例項。所以如果是乙個工廠模式、快取了很多例項、那麼就得考慮效率問題,因為這個類一載入則把所有例項不管用不用一塊建立。

單例模型 懶漢 餓漢

單例模型 餓漢模式 include using namespace std class a static b b return b.a void show private a int main 懶漢模式 include using namespace std class a return a voi...

懶漢單例餓漢單例

設計模式 單例 設計模式 23個設計模式 建立型行為型 結構型架構模式 戰略 單例 單態 如何能保證乙個類只出乙個物件?懶漢式 缺點 訪問速度慢 優點 使用才載入物件 synchronized 同步可以解決懶漢式問題 餓漢式 優點 訪問速度快 缺點 提前載入 下面說一下懶漢式和餓漢式的區別及優點 餓...

餓漢單例與懶漢單例

餓漢單例 執行緒安全 public class mon public static mon getinstance public static mon getinstance if instance null 此時還沒有例項化 instance new mon return instance pub...