摘要:簡單工廠模式工廠模式有一種非常形象的描述,建立對象的類就如一個(gè)工廠,而需要被建立的對象就是一個(gè)個(gè)產(chǎn)品在工廠中加工產(chǎn)品,使用產(chǎn)品的人,不用在乎產(chǎn)品是如何生產(chǎn)出來的。單例模式的單例模式,所謂單例模式就是一個(gè)類只能創(chuàng)建一個(gè)實(shí)例化。
簡單工廠模式
工廠模式有一種非常形象的描述,建立對象的類就如一個(gè)工廠,而需要被建立的對象就是一個(gè)個(gè)產(chǎn)品;在工廠中加工產(chǎn)品,使用產(chǎn)品的人,不用在乎產(chǎn)品是如何生產(chǎn)出來的。
從軟件開發(fā)的角度來說,這樣就有效的降低了模塊之間的耦合。
簡單工廠的作用是實(shí)例化對象,而不需要客戶了解這個(gè)對象屬于哪個(gè)具體的子類。
class car: """interface 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的單例模式,所謂單例模式就是一個(gè)類只能創(chuàng)建一個(gè)實(shí)例化。
哪些地方需要用到單例模式,其實(shí)想一想有很多,比如
1.Python的logger就是一個(gè)單例模式,用以日志記錄
2.Windows的資源管理器是一個(gè)單例模式
3.線程池,數(shù)據(jù)庫連接池等資源池一般也用單例模式
4.網(wǎng)站計(jì)數(shù)器
當(dāng)每個(gè)實(shí)例都會占用資源,而且實(shí)例初始化會影響性能,這個(gè)時(shí)候就可以考慮使用單例模式,它給我們帶來的好處是只有一個(gè)實(shí)例占用資源,并且只需初始化一次
#通過裝飾器實(shí)現(xiàn)單例模式 def singleton(cls, *args, **kw): instances = {} #類變量字典 def _singleton(): #判斷 cls 是否 存在字典中 if cls not in instances: #如果不在字典中,則添加進(jìn)來 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() #實(shí)例化對象1 a2=a() #實(shí)例化對象2 print(a1) #如果不是單例模式創(chuàng)建,這個(gè)地方打印兩次結(jié)果不同 print(a2) a1.shwo() a2.shwo()
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/41213.html
摘要:可以對文件進(jìn)行查看創(chuàng)建等功能,可以對文件內(nèi)容進(jìn)行添加修改刪除,且所使用到的函數(shù)在為,在同時(shí)支持和,但是在系列移除了函數(shù)。在及以后,又支持同時(shí)對多個(gè)文件的上下文進(jìn)行管理,即原文鏈接 Python可以對文件進(jìn)行查看、創(chuàng)建等功能,可以對文件內(nèi)容進(jìn)行添加、修改、刪除,且所使用到的函數(shù)在Python3.5.x為open,在Python2.7.x同時(shí)支持file和open,但是在3.5.x系列移除...
摘要:但是語言并沒有成功,究其原因,認(rèn)為是其非開標(biāo)識放造成的。已經(jīng)成為最受歡迎的程序設(shè)計(jì)語言之一。年月,該語言作者在郵件列表上宣布將于年月日終止支持。其中很重要的一項(xiàng)就是的縮進(jìn)規(guī)則。設(shè)計(jì)定位的設(shè)計(jì)哲學(xué)是優(yōu)雅明確簡單。 文本標(biāo)簽 換行標(biāo)簽 -- br 是單標(biāo)簽,意味著它沒有結(jié)束標(biāo)簽。起強(qiáng)制換行作用 段落中的文字段落中的文字段落中的文字 水平分割線 -- hr 與br相同,也是單標(biāo)簽。可用來區(qū)分...
摘要:希望引以為戒鄭傳裝飾模式如果你了解,你肯定聽過裝飾器模式。在面向?qū)ο笾校b飾模式指動態(tài)地給一個(gè)對象添加一些額外的職責(zé)。就增加一些功能來說,裝飾模式比生成子類更為靈活。 漫談 如果作為一個(gè)Python入門,不了解Python裝飾器也沒什么,但是如果作為一個(gè)中級Python開發(fā)人員,如果再不對python裝飾器熟稔于心的話,那么可能并沒有量變積累到質(zhì)變。 我以前也看過很多講python 裝...
摘要:該系列文章入門,編程基礎(chǔ)概念介紹變量,條件,函數(shù),循環(huán)中的數(shù)據(jù)類型,,,,在中創(chuàng)建對象學(xué)一門編程語言正在變得越來越容易,只要念過高中甚至是初中小學(xué),能熟練聊和懂得一點(diǎn)點(diǎn)軟件的人,入門一門編程語言都不在話下。 該系列文章: 《python入門,編程基礎(chǔ)概念介紹(變量,條件,函數(shù),循環(huán))》 《python中的數(shù)據(jù)類型(list,tuple,dict,set,None)》 《在python...
摘要:作者宋天龍來源科技大本營導(dǎo)語一切都始于年的那個(gè)圣誕節(jié),的誕生并不算恰逢其時(shí),它崛起充滿了機(jī)遇巧合,也有其必然性。年的圣誕節(jié),開始編寫語言的編譯器。年發(fā)布的標(biāo)志著的框架基本確定。年月發(fā)布了系列的最后一個(gè)版本,主版本號為。 showImg(https://segmentfault.com/img/remote/1460000019862276); 作者 | 宋天龍來源 | AI科技大本營 ...
閱讀 1271·2023-04-25 19:10
閱讀 1151·2021-09-10 10:50
閱讀 3037·2021-09-02 15:21
閱讀 1392·2019-08-30 15:52
閱讀 1691·2019-08-30 13:56
閱讀 2094·2019-08-30 12:53
閱讀 1878·2019-08-28 18:22
閱讀 2131·2019-08-26 13:47