原创 python進階篇--實現單例的方法

單例是設計模式中一個比較簡單但又比較重要的一個概念。今天讓我們來一起看一下,python中實現單例的幾種方法。 方案一:通過一個cahcemanager 來緩存類實例,這個是針對多個實例但是不重複的例子。 import weakr

原创 python進階篇--property和itemgetter的魔法

property() 很容易理解, itemgetter也很容易理解。但是當兩者相遇的時候就擦出了魔法的火花。 先來看一段代碼。 import operator class StructTupleMeta(type):

原创 設計模式之十五--享元模式

享元模式:運用共享技術有效地支持大量細粒度的對象。 享元模式和單例模式類似的地方。共通的思路,就是同一類對象之創建一個實例,享元模式在此基礎上進一步加工。利用工廠模式來返回需要的對象。 from abc import ABCMet

原创 設計模式之九--備忘錄模式

備忘錄:在不破壞封裝的前提下,捕獲一個對象的內部狀態,並在該對象之外保存這個狀態。這樣以後就可將該對象恢復到原先保存的狀態。 這個模式比較簡單。基本思想就是保存狀態到一個變量,需要恢復的時候從那個變量去取。好了,上代碼。 cla

原创 設計模式之十三--命令模式

命令模式:將一個請求封裝爲一個對象,從而使你可用不同的請求對客戶進行參數化;對請求排隊或者記錄請求日誌,以及支持可撤銷操作。 命令模式的優點: 能夠容易設計一個命令隊列 在需要情況下,可以較容易地將命令記入日誌 允許接收請求的一

原创 設計模式之十--組合模式

組合模式:將對象組合成熟型結構一表示‘部分-整體’的層次結構。組合模式使得用戶對單個對象的組合對象的使用具有一致性。具體來講就是,樹根和樹枝和樹葉都是統一對待的。樹枝和樹葉繼承於樹根。 什麼時候用組合模式? 當需求中是體現部分與整

原创 設計模式之十一--單例模式

單例模式:保證一個類只有一個實例,並提供一個訪問它的全局訪問點。 單例大家應該都知道,這裏更多來看一下,python實現單例的一些特性 裝飾器來實現的版本 from functools import wraps def sin

原创 設計模式之七--抽象工廠模式

抽象工廠模式:提供一個創建一系列相關或相互依賴對象的接口,而無需指出他們具體的類。 依賴抽象編程 具體代碼如下 from abc import ABCMeta, abstractmethod class IFactory(me

原创 設計模式之十五--訪問者模式

訪問者模式:表示一個作用於某對象結構中各個元素的操作。它是你可以在不改變個元素的類的前提下定義作用於這些元素的新操作。 訪問者模式比較適用於數據結構比較固定的系統中,實現數據結構和算法的分離。但是一般來看數據結構都很不固定,所以用

原创 設計模式之十四--中介者模式

中介者模式:由一箇中介者對象來封裝一些列的對象交。中介者使各對象不需要顯式地相互引用,從而使其耦合鬆散,而且可以獨立地改變他們之間的交互。 中介者模式的優點和缺點,都在於集中式的管理,所有的邏輯都集中於中介者類,可能會造成邏輯過於

原创 設計模式之十二--橋接模式

橋接模式:將抽象部分與他的實現部分分離,是他們都可以獨立變化。 PC上之所以能夠硬件不用關心軟件,軟件也不用關係硬件。都是接口的功勞。統一標準,針對接口編程。 HAL層的應用。 當我們的設計中出現多對多的關係,並且可以分成兩層處理

原创 設計模式之八--狀態模式

狀態模式:當一個對象大的內在狀態改變時允許改變其行爲,這個對象看起來像是改變了其類。 狀態模式主要解決的時當控制一個對象狀態轉換大的條件表達式過於複雜時大的情況,把狀態的判斷邏輯轉移到不同狀態的一系列類當中。 from abc i

原创 設計模式之十三--職責鏈模式

職責鏈模式:是多個對象都有機會處理請求,從而避免請求的法總這和接收者之間的耦合關係。將這個對象連成一條鏈,並沿着這條鏈傳遞該請求,知道有一個對象處理它爲止。 這個模式在公司中非常常見,一個人請假,先從自己的leader開始,然後進

原创 Python進階篇-ctypes(上)

在Windows平臺上,把一些常用的算法或者功能封裝成庫是非常常見的,在開發python程序的時候,我們可能會用到這功能,把C/C++代碼轉化爲python代碼可能是一個非常出力不討好的事情,這時候python調用C就會體現出巨大

原创 設計模式之三--裝飾模式

裝飾模式:動態給一個對象添加一些額外的職責。 # python 3.7.6 from abc import ABCMeta, abstractmethod class DecorateObject(metaclass=ABC