Python設計模式

2021-09-14 03:04:16 字數 1810 閱讀 1596

工廠模式有一種非常形象的描述,建立物件的類就如乙個工廠,而需要被建立的物件就是乙個個產品;在工廠中加工產品,使用產品的人,不用在乎產品是如何生產出來的。

從軟體開發的角度來說,這樣就有效的降低了模組之間的耦合。

簡單工廠的作用是例項化物件,而不需要客戶了解這個物件屬於哪個具體的子類。

class car:

'''inte***ce as product'''

def drive(self):

pass

class bmw(car):

'''concrete product'''

def __init__(self,carname):

self.__name=carname

def drive(self):

print("drive the bmw as "+self.__name)

class benz(car):

'''concrete product'''

def __init__(self,carname):

self.__name=carname

def drive(self):

print("drive the benz as "+self.__name)

class driver:

'''factory also called creator'''

def drivercar(self,name):

if name=="bmw":

return bmw("bmw")

elif name=="benz":

return benz("benz")

carname=input("please input bmw benz :")

dier=driver()

d=dier.drivercar(carname)

d.drive()

python的單例模式,所謂單例模式就是乙個類只能建立乙個例項化。

哪些地方需要用到單例模式,其實想一想有很多,比如

1.python的logger就是乙個單例模式,用以日誌記錄

2.windows的資源管理器是乙個單例模式

3.執行緒池,資料庫連線池等資源池一般也用單例模式

4.**計數器

當每個例項都會占用資源,而且例項初始化會影響效能,這個時候就可以考慮使用單例模式,它給我們帶來的好處是只有乙個例項占用資源,並且只需初始化一次

#通過裝飾器實現單例模式

def singleton(cls, *args, **kw):

instances = {} #類變數字典

def _singleton():

#判斷 cls 是否 存在字典中

if cls not in instances:

#如果不在字典中,則新增進來

instances[cls] = cls(*args, **kw)

#在的話就return返回

return instances[cls]

return _singleton

@singleton #b=singleton(a)() 等同於 @singleton

class a:

def shwo(self):

print("showshow")

a1=a() #例項化物件1

a2=a() #例項化物件2

print(a1) #如果不是單例模式建立,這個地方列印兩次結果不同

print(a2)

a1.shwo()

a2.shwo()

Python設計模式 狀態設計模式

狀態設計模式的簡單示例 優缺點乙個物件可以基於其內部狀態封裝多個行為。狀態模式可以看作在執行時改變物件行為的一種方式。以收音機為例進行說明。收音機具有am fm 切換開關 兩種調頻方式和乙個掃瞄按鈕。因此根據收音機的基本狀態 am fm 當調諧到am或fm頻道時,掃瞄按鈕的行為就會動態的改變。con...

python設計模式 原形設計模式

一 什麼是原形設計模式 原型設計模式 prototype design pattern 幫助我們建立物件的轉殖,其最簡單的形式就是一 個clone 函式,接受乙個物件作為輸入引數,返回輸入物件的乙個副本。在python中,這可以 使用copy.deepcopy 函式來完成。二 應用案例 三 實現使用...

Python 設計模式

例項 類 類工廠 簡單來說就是把一些具有相同方法的類再進行封裝,抽象共同的方法以供呼叫.是工廠方法的高階版本.例項 類 類工廠 抽象工廠 這個python裡可以使用 property實現,就是當呼叫的時候才生成.builder模式主要用於構建乙個複雜的物件,但這個物件構建的演算法是穩定的,物件中的各...