單例---類方法方式
class single(): def __init__(self, name): self.name = name @classmethod def instance(cls, *args, **kwargs): if not hasattr(single, "_instance"): single._instance = single(*args, **kwargs) return single._instance s1 = single.instance('gage') s2 = single.instance() print(s1) print(s2)
單例---new方式class single(object): __isstance = none __first_init = false def __new__(cls, *args, **kwargs): if not cls.__isstance: cls.__isstance = object.__new__(cls) return cls.__isstance def __init__(self, name): if not self.__first_init: self.name = name singleton.__first_init = true a = single('a') b = single('b') print(id(a)) print(id(b))
工廠模式
# 首先定義乙個抽象基類
class carstore(object): # 定義生產汽車的方法 def createcar(self, name): pass # 根據型別去生產車 def order(self, name): self.car = self.createcar(name) self.car.move() # 定義4s店 實現抽象類 class aodicarstore(carstore): def createcar(self, name): self.factory = ca***ctory() return self.factory.createcar(name) # 建立乙個車 class aodi(): def move(self): print('移動') # 定義乙個工廠 class ca***ctory(): def createcar(self, name): self.name = name if self.name == 'aodi': self.car = aodi() return self.car aodi = aodicarstore() aodi.order('aodi')
本文首發於python黑洞網,同步更新
Python設計模式 狀態設計模式
狀態設計模式的簡單示例 優缺點乙個物件可以基於其內部狀態封裝多個行為。狀態模式可以看作在執行時改變物件行為的一種方式。以收音機為例進行說明。收音機具有am fm 切換開關 兩種調頻方式和乙個掃瞄按鈕。因此根據收音機的基本狀態 am fm 當調諧到am或fm頻道時,掃瞄按鈕的行為就會動態的改變。con...
python設計模式 原形設計模式
一 什麼是原形設計模式 原型設計模式 prototype design pattern 幫助我們建立物件的轉殖,其最簡單的形式就是一 個clone 函式,接受乙個物件作為輸入引數,返回輸入物件的乙個副本。在python中,這可以 使用copy.deepcopy 函式來完成。二 應用案例 三 實現使用...
Python 設計模式
例項 類 類工廠 簡單來說就是把一些具有相同方法的類再進行封裝,抽象共同的方法以供呼叫.是工廠方法的高階版本.例項 類 類工廠 抽象工廠 這個python裡可以使用 property實現,就是當呼叫的時候才生成.builder模式主要用於構建乙個複雜的物件,但這個物件構建的演算法是穩定的,物件中的各...