摘要:設(shè)計(jì)模式學(xué)習(xí)裝飾器模式這個(gè)在我的筆記中有介紹工廠模式未完成,待更新單例模式保證一個(gè)對(duì)象最多只有一個(gè)實(shí)例存在。對(duì)安全性要求較高的場(chǎng)景,比如銀行的修改余額業(yè)務(wù)。如果我們不使用單例模式,那么就會(huì)創(chuàng)建三個(gè)不同的實(shí)例。
設(shè)計(jì)模式學(xué)習(xí) 1.裝飾器模式
這個(gè)在我的筆記中有介紹
2.工廠模式author : liibn
time :2018-11-6
未完成,待更新
保證一個(gè)對(duì)象最多只有一個(gè)實(shí)例存在。如果在有多個(gè)創(chuàng)建實(shí)例的語(yǔ)句,只有第一次的會(huì)真正的創(chuàng)建實(shí)例,后面的語(yǔ)句會(huì)返回第一次創(chuàng)建的實(shí)例。
適合的場(chǎng)景:
某些實(shí)例的創(chuàng)建很耗費(fèi)系統(tǒng)資源。
對(duì)安全性要求較高的場(chǎng)景,比如銀行的修改余額業(yè)務(wù)。
python使用裝飾器簡(jiǎn)單的實(shí)現(xiàn)一下,這個(gè)沒(méi)有考慮多線程的情況,并不完美。
# 單例模式裝飾器 def Singleton(cls): _instance = {} def _singleton(*args, **kargs): if cls not in _instance: _instance[cls] = cls(*args, **kargs) return _instance[cls] return _singleton 編寫(xiě)測(cè)試類 @Singleton class A: def __init__(self, x): self.x = x print(self.x)
測(cè)試寫(xiě)好的裝飾器
# 實(shí)例化 a_one = A("one") a_two = A("two") a_three = A("three") # 打印實(shí)例的地址 print(a_one, a_two, a_three, sep=" ") # 比較三個(gè)引用是否相同 print(a_one is a_two is a_three)
輸出如下:
one
<__main__.A object at 0x000001FB17894D68>
<__main__.A object at 0x000001FB17894D68>
<__main__.A object at 0x000001FB17894D68>
True
這里的a_one, a_two, a_three三個(gè)引用指向了同一個(gè)實(shí)例。
如果我們不使用單例模式,那么就會(huì)創(chuàng)建三個(gè)不同的實(shí)例。接下來(lái)注釋掉@Singleton再次運(yùn)行代碼,輸出如下:
one
two
three
<__main__.A object at 0x000001D772F24DA0>
<__main__.A object at 0x000001D772F24EB8>
<__main__.A object at 0x000001D772F2D518>
False
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/44931.html
摘要:繼承的優(yōu)缺點(diǎn)推出繼承的初衷是讓新手順利使用只有專家才能設(shè)計(jì)出來(lái)的框架。多重繼承的真實(shí)應(yīng)用多重繼承能發(fā)揮積極作用。即便是單繼承,這個(gè)原則也能提升靈活性,因?yàn)樽宇惢且环N緊耦合,而且較高的繼承樹(shù)容易倒。 繼承的優(yōu)缺點(diǎn) 推出繼承的初衷是讓新手順利使用只有專家才能設(shè)計(jì)出來(lái)的框架?!狝lan Kay 子類化內(nèi)置類型很麻煩 (如 list 或 dict)) ,別搞這種 直接子類化內(nèi)置類型(如 ...
摘要:也提供多線程支持,而且中的線程并非是模擬出來(lái)的多線程,而是系統(tǒng)級(jí)別的標(biāo)準(zhǔn)庫(kù)提供了兩個(gè)模塊和。同一個(gè)變量,線程則會(huì)互相共享。例如多個(gè)線程對(duì)銀行中的某一個(gè)賬戶進(jìn)行操作。但是實(shí)際情況是隨意切換線程。說(shuō)到的多線程編程,就會(huì)繞不過(guò)。 該文章參考了http://www.liaoxuefeng.com/wi... 廖雪峰的教程。 一個(gè)進(jìn)程至少有一個(gè)線程。Python也提供多線程支持,而且Python...
摘要:學(xué)習(xí)筆記七數(shù)學(xué)形態(tài)學(xué)關(guān)注的是圖像中的形狀,它提供了一些方法用于檢測(cè)形狀和改變形狀。學(xué)習(xí)筆記十一尺度不變特征變換,簡(jiǎn)稱是圖像局部特征提取的現(xiàn)代方法基于區(qū)域圖像塊的分析。本文的目的是簡(jiǎn)明扼要地說(shuō)明的編碼機(jī)制,并給出一些建議。 showImg(https://segmentfault.com/img/bVRJbz?w=900&h=385); 前言 開(kāi)始之前,我們先來(lái)看這樣一個(gè)提問(wèn): pyth...
摘要:文件打開(kāi)的方式有多種。讀取模式寫(xiě)入模式。若文件不存在,則會(huì)創(chuàng)建文件。但是文件必須已經(jīng)存在。模式文件的讀寫(xiě)是文本模式,這就意味著會(huì)把轉(zhuǎn)換成平臺(tái)相關(guān)的換行符。 現(xiàn)代的操作系統(tǒng)其實(shí)都不允許程序直接讀寫(xiě)系統(tǒng)中的文件,而是程序通過(guò)請(qǐng)求系統(tǒng)打開(kāi)一個(gè)文件對(duì)象,然后再對(duì)文件對(duì)象進(jìn)行讀寫(xiě)。 import logging try: f = open(getAttar.py, r) con...
閱讀 1613·2021-11-22 09:34
閱讀 1696·2019-08-29 16:36
閱讀 2677·2019-08-29 15:43
閱讀 3121·2019-08-29 13:57
閱讀 1306·2019-08-28 18:05
閱讀 1885·2019-08-26 18:26
閱讀 3254·2019-08-26 10:39
閱讀 3467·2019-08-23 18:40