自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

淺談C++設(shè)計(jì)模式之單例模式

開發(fā) 后端
單例模式:保證一個類僅有一個實(shí)例,并提供一個訪問它的全局訪問點(diǎn)。

單例模式:保證一個類僅有一個實(shí)例,并提供一個訪問它的全局訪問點(diǎn)。

  通常我們可以讓一個全局變量使得一個對象被訪問,但它不能防止客戶實(shí)例化多個對象,一個***的辦法就是讓類自身負(fù)責(zé)保護(hù)它的唯一實(shí)例,這個類可以保證沒有其它實(shí)例可以被創(chuàng)建,并且它可以提供一個訪問該實(shí)例的方法。

  單例模式因?yàn)镾ingleton類封裝它的唯一實(shí)例,這樣它可以嚴(yán)格控制客戶怎樣訪問它以及何時訪問它,簡單地說就是對唯一實(shí)例的受控訪問。

  實(shí)現(xiàn)原理:將構(gòu)造函數(shù)私有化,只提供一個靜態(tài)方法來創(chuàng)建一個對象。

  (1) 將構(gòu)造函數(shù)設(shè)置成private;

  (2) 聲明一個靜態(tài)的字段,初始化一個實(shí)例,返回Singleton對象;

  (3) 用靜態(tài)方法或靜態(tài)屬性,返回那個唯一的實(shí)例

  當(dāng)然,在對象用多線程時,可能會造成創(chuàng)建多個實(shí)例,可以給創(chuàng)建對象的過程加鎖。

  • Singleton:定義一個Instance操作

  1. class Singleton{ 
  2. public
  3.     static Singleton* Instance(); 
  4. protected
  5.     Singleton(){} 
  6.     Singleton(const Singleton &instance){} 
  7.     Singleton& operator=(const Singleton &instance){} 
  8. private
  9.     static Singleton* instance; 
  10. }; 
  11. Singleton* Singleton::Instance(){ 
  12.     if(instance == 0
  13.         instance = new Singleton; 
  14.     return instance; 
  15. Singleton* Singleton::instance = 0

  其實(shí),單例模式中最關(guān)鍵的就是把public的構(gòu)造函數(shù)私有化。這樣就把構(gòu)造對象的實(shí)例化的權(quán)利交給了類本身,讓Singleton來控制類的 實(shí)例化。當(dāng)然除了構(gòu)造函數(shù)之外,還需要把類的控制復(fù)制函數(shù)(拷貝構(gòu)造函數(shù),賦值運(yùn)算)私有化,因?yàn)榭蛻舳藳]有構(gòu)造的權(quán)利,所以也就沒有使用控制復(fù)制函數(shù)的 權(quán)利。

責(zé)任編輯:王雪燕 來源: 博客園
相關(guān)推薦

2016-03-28 10:23:11

Android設(shè)計(jì)單例

2022-06-07 08:55:04

Golang單例模式語言

2021-02-01 10:01:58

設(shè)計(jì)模式 Java單例模式

2023-03-21 15:21:52

開發(fā)程序設(shè)計(jì)static

2021-03-02 08:50:31

設(shè)計(jì)單例模式

2010-02-05 17:00:06

C++單例模式

2013-11-26 16:20:26

Android設(shè)計(jì)模式

2010-02-03 09:43:16

C++單例模式

2022-02-06 22:30:36

前端設(shè)計(jì)模式

2010-01-27 10:45:21

C++單例模式

2024-02-04 12:04:17

2021-09-07 10:44:35

異步單例模式

2020-06-08 08:04:49

設(shè)計(jì)模式結(jié)構(gòu)型接口

2009-09-02 16:23:27

C# Singleto

2021-08-11 17:22:11

設(shè)計(jì)模式單例

2023-11-13 16:49:51

C++單例

2022-09-29 08:39:37

架構(gòu)

2022-03-29 07:52:07

設(shè)計(jì)模式單例設(shè)計(jì)模式java

2013-03-26 10:35:47

Objective-C單例實(shí)現(xiàn)

2024-03-06 13:19:19

工廠模式Python函數(shù)
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號