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