最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

python單例模式實例分析

 更新時間:2015年04月08日 11:05:26   作者:huaweitman  
這篇文章主要介紹了python單例模式,實例分析了單例模式的原理與使用技巧,具有一定參考借鑒價值,需要的朋友可以參考下

本文實例講述了python單例模式。分享給大家供大家參考。具體分析如下:

__new__()在__init__()之前被調(diào)用,用于生成實例對象。利用這個方法和類的屬性的特點可以實現(xiàn)設計模式的單例模式。單例模式是指創(chuàng)建唯一對象,單例模式設計的類只能實例化1個對象。 

class Singleton(object):
  __instance=None
  def__init__(self): 
    pass
  def__new__(cls,*args,**kwd):
    if Singleton.__instance is None: 
      Singleton.__instance=object.__new__(cls,*args,**kwd)
    return Singleton.__instance

單例模式是一種常用的軟件設計模式。在它的核心結(jié)構(gòu)中只包含一個被稱為單例類的特殊類。通過單例模式可以保證系統(tǒng)中一個類只有一個實例而且該實例易于外界訪問,從而方便對實例個數(shù)的控制并節(jié)約系統(tǒng)資源。如果希望在系統(tǒng)中某個類的對象只能存在一個,單例模式是最好的解決方案。

顯然單例模式的要點有三個;一是某個類只能有一個實例;二是它必須自行創(chuàng)建這個實例;三是它必須自行向整個系統(tǒng)提供這個實例。

從具體實現(xiàn)角度來說,就是以下三點:一是單例模式的類只提供私有的構(gòu)造函數(shù),二是類定義中含有一個該類的靜態(tài)私有對象,三是該類提供了一個靜態(tài)的共有的函數(shù)用于創(chuàng)建或獲取它本身的靜態(tài)私有對象。

在下面的對象圖中,有一個"單例對象",而"客戶甲"、"客戶乙" 和"客戶丙"是單例對象的三個客戶對象??梢钥吹?,所有的客戶對象共享一個單例對象。而且從單例對象到自身的連接線可以看出,單例對象持有對自己的引用。

一些資源管理器常常設計成單例模式。

在計算機系統(tǒng)中,需要管理的資源包括軟件外部資源,譬如每臺計算機可以有若干個打印機,但只能有一個Printer Spooler, 以避免兩個打印作業(yè)同時輸出到打印機中。每臺計算機可以有若干傳真卡,但是只應該有一個軟件負責管理傳真卡,以避免出現(xiàn)兩份傳真作業(yè)同時傳到傳真卡中的情況。每臺計算機可以有若干通信端口,系統(tǒng)應當集中管理這些通信端口,以避免一個通信端口同時被兩個請求同時調(diào)用。

需要管理的資源包括軟件內(nèi)部資源,譬如,大多數(shù)的軟件都有一個(甚至多個)屬性(properties)文件存放系統(tǒng)配置。這樣的系統(tǒng)應當由一個對象來管理一個屬性文件。

需要管理的軟件內(nèi)部資源也包括譬如負責記錄網(wǎng)站來訪人數(shù)的部件,記錄軟件系統(tǒng)內(nèi)部事件、出錯信息的部件,或是對系統(tǒng)的表現(xiàn)進行檢查的部件等。這些部件都必須集中管理,不可政出多頭。

這些資源管理器構(gòu)件必須只有一個實例,這是其一;它們必須自行初始化,這是其二;允許整個系統(tǒng)訪問自己這是其三。因此,它們都滿足單例模式的條件,是單例模式的應用。

優(yōu)點:

一、實例控制

單例模式會阻止其他對象實例化其自己的單例對象的副本,從而確保所有對象都訪問唯一實例。

二、靈活性

因為類控制了實例化過程,所以類可以靈活更改實例化過程。

缺點:

一、開銷

雖然數(shù)量很少,但如果每次對象請求引用時都要檢查是否存在類的實例,將仍然需要一些開銷??梢酝ㄟ^使用靜態(tài)初始化解決此問題。

二、可能的開發(fā)混淆

使用單例對象(尤其在類庫中定義的對象)時,開發(fā)人員必須記住自己不能使用new關(guān)鍵字實例化對象。因為可能無法訪問庫源代碼,因此應用程序開發(fā)人員可能會意外發(fā)現(xiàn)自己無法直接實例化此類。

三、對象生存期

不能解決刪除單個對象的問題。在提供內(nèi)存管理的語言中(例如基于.NET Framework的語言),只有單例類能夠?qū)е聦嵗蝗∠峙?,因為它包含對該實例的私有引用。在某些語言中(如 C++),其他類可以刪除對象實例,但這樣會導致單例類中出現(xiàn)懸浮引用。

希望本文所述對大家的Python程序設計有所幫助。

相關(guān)文章

  • python作圖基礎之plt.contour實例詳解

    python作圖基礎之plt.contour實例詳解

    contour和contourf都是畫三維等高線圖的,下面這篇文章主要給大家介紹了關(guān)于python作圖基礎操作之plt.contour的相關(guān)資料,文中通過實例代碼介紹的非常詳細,需要的朋友可以參考下
    2022-06-06
  • Python使用gRPC傳輸協(xié)議教程

    Python使用gRPC傳輸協(xié)議教程

    今天小編就為大家分享一篇關(guān)于Python使用gRPC傳輸協(xié)議教程,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧
    2018-10-10
  • Python音頻操作工具PyAudio上手教程詳解

    Python音頻操作工具PyAudio上手教程詳解

    PyAudio是Python開源工具包,由名思義,是提供對語音操作的工具包。下面介紹一個好用的處理音頻PyAudio工具包。感興趣的朋友跟隨小編一起看看吧
    2019-06-06
  • Python?Requests?基本使用及Requests與?urllib?區(qū)別

    Python?Requests?基本使用及Requests與?urllib?區(qū)別

    在使用Python爬蟲時,需要模擬發(fā)起網(wǎng)絡請求,主要用到的庫有requests庫和python內(nèi)置的urllib庫,一般建議使用requests,它是對urllib的再次封裝,今天通過本文給大家講解Python?Requests使用及urllib區(qū)別,感興趣的朋友一起看看吧
    2022-11-11
  • Python流程控制 while循環(huán)實現(xiàn)解析

    Python流程控制 while循環(huán)實現(xiàn)解析

    這篇文章主要介紹了Python流程控制 while循環(huán)實現(xiàn)解析,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2019-09-09
  • PYTHON發(fā)送郵件YAGMAIL的簡單實現(xiàn)解析

    PYTHON發(fā)送郵件YAGMAIL的簡單實現(xiàn)解析

    這篇文章主要介紹了PYTHON發(fā)送郵件YAGMAIL的簡單實現(xiàn)解析,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2019-10-10
  • python網(wǎng)絡爬蟲 CrawlSpider使用詳解

    python網(wǎng)絡爬蟲 CrawlSpider使用詳解

    這篇文章主要介紹了python網(wǎng)絡爬蟲 CrawlSpider使用詳解,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2019-09-09
  • python實現(xiàn)簡單的井字棋小游戲

    python實現(xiàn)簡單的井字棋小游戲

    這篇文章主要為大家詳細介紹了python實現(xiàn)簡單的井字棋小游戲,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-04-04
  • pycharm 對代碼做靜態(tài)檢查操作

    pycharm 對代碼做靜態(tài)檢查操作

    這篇文章主要介紹了pycharm 對代碼做靜態(tài)檢查操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-06-06
  • python的函數(shù)和方法(中)

    python的函數(shù)和方法(中)

    這篇文章主要為大家詳細介紹了python的函數(shù)和方法,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-11-11

最新評論

博白县| 阳江市| 塔河县| 阿拉尔市| 葵青区| 秦安县| 新安县| 民勤县| 宁波市| 永兴县| 青海省| 泰兴市| 黎平县| 抚顺市| 大同县| 法库县| 通榆县| 三门县| 娱乐| 南平市| 来宾市| 炉霍县| 彭水| 菏泽市| 图们市| 正蓝旗| 米脂县| 和平县| 武平县| 清原| 曲阜市| 沈丘县| 长子县| 晴隆县| 枣庄市| 云霄县| 沧州市| 中方县| 繁峙县| 嘉峪关市| 浏阳市|