日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > asp.net >内容正文

asp.net

设计模式——10.单例模式

發布時間:2025/5/22 asp.net 38 豆豆
生活随笔 收集整理的這篇文章主要介紹了 设计模式——10.单例模式 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

單例模式(Singleton)

單例模式(Singleton)簡介:

單例模式保證一個類僅有一個實例,并提供一個訪問它的全局訪問點。使用單例模式能夠讓設計師快速獲取提供某項服務或者功能的對象,可以省去層層傳遞對象的困擾。

單例模式在實現時,需要編程語言的支持,需要編程語言具有靜態類屬性靜態類方法以及可重新定義構造函數的訪問修飾符,具有這3項語句功能的編程語言就可以實現單例模式。

C++代碼

單線程

Singleton單例類:

//file: Singleton.h#pragma onceclass Singleton{public:virtual ~Singleton();static Singleton * getInstance();void operation();private:static Singleton * instance;Singleton();}; //file: Singleton.cpp#include "pch.h"#include "Singleton.h"#include <iostream>Singleton * Singleton::instance = nullptr;Singleton::Singleton() {}Singleton::~Singleton(){delete instance;}Singleton * Singleton::getInstance(){if (instance == nullptr)instance = new Singleton();return instance;}void Singleton::operation(){std::cout << "Singleton Operation ." << std::endl;}

客戶端代碼:

//file: SingletonPattern.cpp : This file contains the 'main' function. Program execution begins and ends there.#include "pch.h"#include "Singleton.h"#include <iostream>using namespace std;int main(){Singleton * singleton = Singleton::getInstance();singleton->operation();char c;cin >> c;return 0;}

多線程

C#代碼

單線程

Singleton單例類:

public class Singleton{static Singleton instance;Singleton() { }public static Singleton Instance{get{if (instance == null)instance = new Singleton();return instance;}}public void Operation(){Console.WriteLine("The Singleton Operation .");}}

其中靜態類方法Instance用來獲取_instance屬性,上方代碼使用了C#的getter存取運算符功能來實現Instance方法,使Singleton.Instance()的調用方式,寫為Singleton.Instance的方式,減少的一對括號對于后續代碼維護有著一定程度的幫助。

客戶端測試代碼:

class Program{static void Main(string[] args){Singleton singleton = Singleton.Instance;singleton.Operation();Console.ReadKey();}}

或者使用方法方式獲取單例:

public class Singleton{static Singleton instance;Singleton() { }public static Singleton GetInstance(){if (instance == null){instance = new Singleton();}return instance;}public void Operation(){Console.WriteLine("The Singleton Operation .");}}//使用時://Singleton singleton = Singleton.GetInstance();

多線程

單例模式優點及缺點

優點:
單例模式通過將類的構造方法私有化,讓類對象只能夠在類的成員方法中產生,配合類的靜態成員屬性在類中只會出現一個的限制,讓系統可以有效的限制數量,因此,單例模式可以有效的限制類對象產生的地點和時間,同時也可以防止類對象被隨意產生而造成系統錯誤。

缺點:

單例模式使用方便,但是在挑選適合以單例模式實現的類時,需要認真挑選,不能夠濫用單例;其次,單例模式違反了“開閉原則”,因為通過Instance方法獲取的對象是“實現類”不是“接口類”,該方法返回的對象是包含了實現細節的實體類,當后續設計變更后者需求改變時,程序員無法將它替代為其他類,只能改變實現類中原有的程序代碼,無法滿足“對修改關閉”的要求。

REF

書籍:

設計模式與游戲開發、大話設計模式

GitHub:

https://github.com/me115/design_patterns

轉載于:https://www.cnblogs.com/sylvan/p/10092467.html

總結

以上是生活随笔為你收集整理的设计模式——10.单例模式的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 一级欧美在线 | 亚洲欧美系列 | 婷婷五月精品中文字幕 | 国产喷白浆一区二区三区 | 曰本三级日本三级日本三级 | 97伦伦午夜电影理伦片 | 人妻体内射精一区二区 | 综合五月婷 | 希岛婚前侵犯中文字幕在线 | 国产精品卡一 | 善良的女朋友在线观看 | 欧美久久伊人 | 插吧插吧综合网 | 性欧美久久久 | 色戒电影未测减除版 | 五月天校园春色 | 精品少妇一区二区三区 | www色网| 亚洲国产美女视频 | 国产黄大片在线观看画质优化 | 亚洲色在线视频 | 亚洲一区在线不卡 | 深夜成人福利视频 | 激情内射亚洲一区二区三区爱妻 | 五月婷婷亚洲综合 | 国产高清av | 亚洲综合成人av | a视频免费| 国产精品第108页 | 久久久综合 | 亚洲大片免费看 | jav中文字幕 | 91蝌蚪九色 | 蜜美杏av| 亚洲av无码一区东京热久久 | 日本高清免费aaaaa大片视频 | 亚洲毛片a | 高跟鞋肉丝交足91 | 黄色91在线观看 | 91国内在线视频 | 91爱爱com| 五月婷婷激情 | 欧州一区二区 | 麻豆系列在线观看 | 影音先锋中文在线 | 伊人青青久 | 亚洲少妇中文字幕 | 久久成人综合 | 国内视频一区二区 | 国产tv在线观看 | 中文字幕一区二区三区波野结 | 少妇熟女高潮流白浆 | 污污视频在线观看免费 | 欧美成人一区二免费视频软件 | 国产日本欧美在线观看 | 国产91精品一区二区麻豆亚洲 | 爱爱小视频免费看 | 美国一区二区 | www.亚洲激情| 亚洲热在线观看 | 国产一区二区不卡 | 黄色在线观看免费视频 | 久久久久久亚洲av无码专区 | 午夜免费在线观看 | 国产绿帽一区二区三区 | 色多多导航 | 成人黄色小说在线观看 | 午夜精品成人毛片非洲 | 狠狠爱欧美 | 国产做爰免费视频观看 | 在线观看国产成人 | 久久福利影视 | 综合久久av | 无码精品人妻一区二区三区漫画 | 美女黄页网站 | 国产高潮视频在线观看 | 97播播 | 成人午夜免费在线观看 | 亚洲精品免费播放 | 国产精品激情偷乱一区二区∴ | 麻豆视频免费在线 | 亚洲国产欧美精品 | 午夜看片福利 | 欧美性生活网 | 九九热精品免费视频 | 三上悠亚中文字幕在线播放 | 亚洲欧美激情一区二区三区 | 福利91| 国产91精品一区二区绿帽 | 欧美激情视频在线播放 | 中国女人内谢69xxxx免费视频 | 人妻精品久久久久中文 | 中文久草 | 久久久999视频 | 欧美视频一区二区在线 | av在线网页 | 成人拍拍视频 | 在线国产欧美 | 三浦惠理子aⅴ一二三区 |