中文亚洲精品无码_熟女乱子伦免费_人人超碰人人爱国产_亚洲熟妇女综合网

當前位置: 首頁 > news >正文

好的網(wǎng)站設(shè)計模板廣州seo網(wǎng)站開發(fā)

好的網(wǎng)站設(shè)計模板,廣州seo網(wǎng)站開發(fā),龍崗網(wǎng)站制作市場,網(wǎng)站做城市地圖鏈接:C 設(shè)計模式 鏈接:C 設(shè)計模式 - 享元模式 單例模式(Singleton Pattern)是創(chuàng)建型設(shè)計模式,它確保一個類只有一個實例,并提供一個全局訪問點來訪問這個實例。單例模式在需要全局共享資源或控制實例數(shù)量的…

鏈接:C++ 設(shè)計模式
鏈接:C++ 設(shè)計模式 - 享元模式

單例模式(Singleton Pattern)是創(chuàng)建型設(shè)計模式,它確保一個類只有一個實例,并提供一個全局訪問點來訪問這個實例。單例模式在需要全局共享資源或控制實例數(shù)量的場景中非常有用,例如數(shù)據(jù)庫連接、日志記錄器等。

1.問題分析

在開發(fā)中,有些對象需要全局唯一的實例。例如:

  • 配置管理器:應(yīng)用程序的配置通常需要全局唯一的實例,以確保配置的一致性。
  • 日志記錄器:日志記錄器需要全局唯一的實例,以便集中管理日志輸出。
  • 線程池:線程池需要全局唯一的實例,以便高效地管理線程資源。
  • 數(shù)據(jù)庫連接池:數(shù)據(jù)庫連接池需要全局唯一的實例,以便復用數(shù)據(jù)庫連接,減少連接創(chuàng)建和銷毀的開銷。

如果這些對象被多次創(chuàng)建,會導致以下問題:

  • 資源浪費:每次創(chuàng)建新實例都會消耗系統(tǒng)資源,導致資源浪費。
  • 狀態(tài)不一致:多個實例之間的狀態(tài)可能不一致,導致程序行為不可預測。
  • 管理復雜:多個實例的管理和維護變得復雜,增加了代碼的復雜性和維護成本。

為了避免上述問題,我們需要一種機制來確保某個類只有一個實例,并提供一個全局訪問點來訪問該實例。這就是單例模式的核心需求。

2.實現(xiàn)步驟

  1. 私有化構(gòu)造函數(shù):將類的構(gòu)造函數(shù)、拷貝構(gòu)造函數(shù)和賦值運算符設(shè)為私有,防止外部創(chuàng)建實例。
  2. 定義靜態(tài)成員變量:用于存儲單例對象的唯一實例。
  3. 提供公共靜態(tài)方法:提供全局訪問點來獲取單例對象的唯一實例。

3.代碼示例

3.1.簡單形式

class Singleton {public:// 刪除拷貝構(gòu)造函數(shù)和賦值運算符,防止復制單例對象Singleton(const Singleton&) = delete;Singleton& operator=(const Singleton&) = delete;// 獲取單例實例的公共靜態(tài)方法static Singleton& getInstance() {// 使用局部靜態(tài)變量來實現(xiàn)線程安全的單例模式static Singleton instance;return instance;}// 示例方法,顯示單例實例的地址void showMessage() { std::cout << "Singleton instance address: " << this << std::endl; }private:// 私有構(gòu)造函數(shù),防止外部創(chuàng)建實例Singleton() { std::cout << "Singleton instance created." << std::endl; }// 私有析構(gòu)函數(shù),防止外部刪除實例~Singleton() { std::cout << "Singleton instance destroyed." << std::endl; }
};
int main() {// 獲取單例實例并調(diào)用方法Singleton& singleton = Singleton::getInstance();singleton.showMessage();// 嘗試獲取另一個單例實例Singleton& anotherSingleton = Singleton::getInstance();anotherSingleton.showMessage();return 0;
}

3.2.指針形式

#include <memory>
#include <mutex>
#include <stdexcept>class Singleton {public:// 刪除拷貝構(gòu)造函數(shù)和賦值運算符,防止復制實例Singleton(const Singleton&) = delete;Singleton& operator=(const Singleton&) = delete;// 獲取實例的靜態(tài)方法static Singleton& getInstance() {if (!instance) {throw std::logic_error("Instance not yet initialized. Call initInstance() first.");}return *instance;}// 初始化實例的靜態(tài)方法static void initInstance(int value) {std::call_once(initFlag, [&]() { instance.reset(new Singleton(value)); });}// 示例方法void showMessage() { std::cout << "Singleton instance address: " << this << std::endl; }private:// 私有化構(gòu)造函數(shù),防止外部創(chuàng)建實例Singleton(int value) : value_(value) { std::cout << "Singleton instance created with value: " << value_ << std::endl; }// 私有化析構(gòu)函數(shù),防止外部刪除實例~Singleton() { std::cout << "Singleton instance destroyed." << std::endl; }// 靜態(tài)智能指針成員變量,用于保存唯一的實例static std::unique_ptr<Singleton> instance;// 用于確保單例初始化的標志static std::once_flag initFlag;// 示例成員變量int value_;
};// 初始化靜態(tài)成員變量
std::unique_ptr<Singleton> Singleton::instance = nullptr;
std::once_flag Singleton::initFlag;
int main() {// 初始化單例實例Singleton::initInstance(42);// 獲取單例實例并調(diào)用方法Singleton& singleton = Singleton::getInstance();singleton.showMessage();// 再次獲取單例實例并調(diào)用方法Singleton& singleton2 = Singleton::getInstance();singleton2.showMessage();return 0;
}
http://www.risenshineclean.com/news/59956.html

相關(guān)文章:

  • 中電建鐵路建設(shè)公司網(wǎng)站查網(wǎng)址
  • 宜昌 醫(yī)院 網(wǎng)站建設(shè)seo排名優(yōu)化推廣教程
  • 網(wǎng)站建設(shè)單位不給數(shù)據(jù)庫google推廣教程
  • 防城港北京網(wǎng)站建設(shè)廣州權(quán)威發(fā)布
  • 安陽做網(wǎng)站公司廣州今天剛剛發(fā)生的重大新聞
  • 網(wǎng)站背景視頻是怎么做的新聞聯(lián)播今日新聞
  • 網(wǎng)站建設(shè)叫什么軟件seo優(yōu)化費用
  • wordpress toc長沙seo優(yōu)化哪家好
  • 貴陽做網(wǎng)站好的公司有哪些今天的新聞 最新消息
  • wordpress 空兩格沈陽seo優(yōu)化排名公司
  • 今日上海大事件網(wǎng)站seo關(guān)鍵詞設(shè)置
  • 誰家的網(wǎng)站做的比較好色盲測試圖片60張
  • 集團網(wǎng)站建設(shè)新聞seo長尾關(guān)鍵詞排名
  • 有哪些公司的網(wǎng)站做的比較好公眾號如何推廣運營
  • 青島找網(wǎng)站建設(shè)公司好5000元網(wǎng)站seo推廣
  • b2c商城網(wǎng)站常用的搜索引擎有哪些
  • 高端建筑物圖片紹興百度seo
  • 寧波男科醫(yī)院哪家好哈爾濱優(yōu)化網(wǎng)站公司
  • 廣東網(wǎng)站建設(shè)怎么選網(wǎng)站優(yōu)化策劃書
  • 一個網(wǎng)站要怎么做的2022智慧樹互聯(lián)網(wǎng)與營銷創(chuàng)新
  • 服裝公司網(wǎng)站建設(shè)開題報告福州網(wǎng)絡(luò)營銷推廣公司
  • 宜昌微網(wǎng)站建設(shè)微信推廣鏈接怎么制作
  • 政府網(wǎng)站建設(shè)評分標準網(wǎng)站建設(shè)優(yōu)化的技巧
  • 蘇州做網(wǎng)站優(yōu)化網(wǎng)站關(guān)鍵詞怎么快速上排名
  • 杭州濱江網(wǎng)站建設(shè)杭州網(wǎng)站關(guān)鍵詞排名優(yōu)化
  • 開發(fā)一個物流app需要多少錢優(yōu)化資源配置
  • flash網(wǎng)站的制作網(wǎng)頁制作
  • 小程序搭建賺錢是真的嗎南京seo報價
  • word文檔做網(wǎng)站如何推廣seo
  • java 開發(fā)手機網(wǎng)站開發(fā)莆田seo推廣公司