国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Python > 正文

python單例模式實(shí)例分析

2020-02-23 00:36:24
字體:
供稿:網(wǎng)友

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

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

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

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

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

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

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

一些資源管理器常常設(shè)計(jì)成單例模式。

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

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

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

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

發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 安图县| 长乐市| 华容县| 区。| 翁牛特旗| 获嘉县| 当雄县| 彭阳县| 北海市| 长乐市| 静宁县| 湖州市| 沾化县| 黄龙县| 尚义县| 青岛市| 轮台县| 廊坊市| 集安市| 葫芦岛市| 建瓯市| 平湖市| 陵水| 泸西县| 连州市| 长汀县| 廊坊市| 那坡县| 石家庄市| 比如县| 霸州市| 固始县| 鸡西市| 靖边县| 留坝县| 日土县| 伽师县| 皮山县| 天水市| 扎囊县| 缙云县|