Python設(shè)計(jì)模式之工廠方法模式實(shí)例詳解
本文實(shí)例講述了Python設(shè)計(jì)模式之工廠方法模式。分享給大家供大家參考,具體如下:
工廠方法模式(Factory Method Pattern):定義一個(gè)用于創(chuàng)建對(duì)象的接口,讓子類決定實(shí)例化哪一個(gè)類,工廠方法使一個(gè)類的實(shí)例化延時(shí)到其子類.
#!/usr/bin/env python # -*- coding:utf-8 -*- __author__ = 'Andy' """ 大話設(shè)計(jì)模式 設(shè)計(jì)模式——工廠方法模式 工廠方法模式(Factory Method Pattern):定義一個(gè)用于創(chuàng)建對(duì)象的接口,讓子類決定實(shí)例化哪一個(gè)類,工廠方法使一個(gè)類的實(shí)例化延時(shí)到其子類. 工廠方法模式克服了簡(jiǎn)單工廠模式違背開放-封閉原則的缺點(diǎn),又保持了封裝對(duì)象創(chuàng)建過程的優(yōu)點(diǎn) 場(chǎng)景:雷鋒工廠,不關(guān)心執(zhí)行者,只關(guān)心執(zhí)行結(jié)果 """ class LeiFeng(object): def Sweep(self): print "掃地" def Wash(self): print "洗衣" def BuyRice(self): print "買米" class IFactory(LeiFeng): def CreateLeiFeng(self): pass #大學(xué)生 class Undergraduate(LeiFeng): pass #新增社區(qū)服務(wù)者 class Volunteer(LeiFeng): pass # 學(xué)習(xí)雷鋒的大學(xué)生工廠 class UndergraduateFactory(IFactory): def CreateLeiFeng(self): return Undergraduate() #新增一個(gè)社區(qū)服務(wù)者的工廠e class VolunteerFactory(IFactory): def CreateLeiFeng(self): return Volunteer() if __name__ == "__main__": student = UndergraduateFactory() volunteer = VolunteerFactory() student.BuyRice() student.Sweep() volunteer.Wash()
運(yùn)行結(jié)果:
買米
掃地
洗衣
上面類的設(shè)計(jì)如下圖:
創(chuàng)建一個(gè)抽象工廠類CreateLeiFeng和一個(gè)抽象對(duì)象類LeiFeng,當(dāng)創(chuàng)建具體leifeng對(duì)象-Undergradiate去dosomething時(shí),使用繼承抽象工廠的UndergraduateFactory工廠類,該類返回一個(gè)Undergradiate實(shí)例,如果還要去做另一個(gè)dosomething時(shí),再創(chuàng)建一個(gè)VolunteerFactory工廠方法創(chuàng)建創(chuàng)建一個(gè)Volunteer實(shí)例就可以了
更多關(guān)于Python相關(guān)內(nèi)容可查看本站專題:《Python數(shù)據(jù)結(jié)構(gòu)與算法教程》、《Python Socket編程技巧總結(jié)》、《Python函數(shù)使用技巧總結(jié)》、《Python字符串操作技巧匯總》及《Python入門與進(jìn)階經(jīng)典教程》
希望本文所述對(duì)大家Python程序設(shè)計(jì)有所幫助。
相關(guān)文章
python進(jìn)程管理工具supervisor安裝使用
supervisor是一個(gè)用python語言編寫的進(jìn)程管理工具,它可以很方便的監(jiān)聽、啟動(dòng)、停止、重啟一個(gè)或多個(gè)進(jìn)程,本文給大家介紹python進(jìn)程管理工具supervisor安裝使用配置教程,感興趣的朋友一起看看吧2023-08-08如何使用python傳入不確定個(gè)數(shù)參數(shù)
這篇文章主要介紹了如何使用python傳入不確定個(gè)數(shù)參數(shù),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-02-02Django admin實(shí)現(xiàn)TextField字段changelist頁面換行、空格正常顯示
本文主要介紹了Django admin實(shí)現(xiàn)TextField字段changelist頁面換行、空格正常顯示,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-01-01pycharm2022.2遠(yuǎn)程連接服務(wù)器調(diào)試代碼實(shí)現(xiàn)
本文主要介紹了pycharm2022.2遠(yuǎn)程連接服務(wù)器調(diào)試代碼實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2023-02-02Python imageio讀取視頻并進(jìn)行編解碼詳解
今天小編就為大家分享一篇Python imageio讀取視頻并進(jìn)行編解碼詳解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2019-12-12Python中print和return的作用及區(qū)別解析
print的作用是輸出數(shù)據(jù)到控制端,就是打印在你能看到的界面上。這篇文章給大家介紹Python中print和return的作用及區(qū)別解析,感興趣的朋友跟隨小編一起看看吧2019-05-05教你使用Python建立任意層數(shù)的深度神經(jīng)網(wǎng)絡(luò)
這篇文章主要介紹了Python建立任意層數(shù)的深度神經(jīng)網(wǎng)絡(luò),本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-08-08