Python設(shè)計(jì)模式之工廠方法模式實(shí)例詳解
本文實(shí)例講述了Python設(shè)計(jì)模式之工廠方法模式。分享給大家供大家參考,具體如下:
工廠方法模式(Factory Method Pattern):定義一個(gè)用于創(chuàng)建對(duì)象的接口,讓子類(lèi)決定實(shí)例化哪一個(gè)類(lèi),工廠方法使一個(gè)類(lèi)的實(shí)例化延時(shí)到其子類(lèi).
#!/usr/bin/env python
# -*- coding:utf-8 -*-
__author__ = 'Andy'
"""
大話設(shè)計(jì)模式
設(shè)計(jì)模式——工廠方法模式
工廠方法模式(Factory Method Pattern):定義一個(gè)用于創(chuàng)建對(duì)象的接口,讓子類(lèi)決定實(shí)例化哪一個(gè)類(lèi),工廠方法使一個(gè)類(lèi)的實(shí)例化延時(shí)到其子類(lèi).
工廠方法模式克服了簡(jiǎn)單工廠模式違背開(kāi)放-封閉原則的缺點(diǎn),又保持了封裝對(duì)象創(chuàng)建過(guò)程的優(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 "買(mǎi)米"
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é)果:
買(mǎi)米
掃地
洗衣
上面類(lèi)的設(shè)計(jì)如下圖:

創(chuàng)建一個(gè)抽象工廠類(lèi)CreateLeiFeng和一個(gè)抽象對(duì)象類(lèi)LeiFeng,當(dāng)創(chuàng)建具體leifeng對(duì)象-Undergradiate去dosomething時(shí),使用繼承抽象工廠的UndergraduateFactory工廠類(lèi),該類(lèi)返回一個(gè)Undergradiate實(shí)例,如果還要去做另一個(gè)dosomething時(shí),再創(chuàng)建一個(gè)VolunteerFactory工廠方法創(chuàng)建創(chuàng)建一個(gè)Volunteer實(shí)例就可以了
更多關(guān)于Python相關(guān)內(nèi)容可查看本站專(zhuān)題:《Python數(shù)據(jù)結(jié)構(gòu)與算法教程》、《Python Socket編程技巧總結(jié)》、《Python函數(shù)使用技巧總結(jié)》、《Python字符串操作技巧匯總》及《Python入門(mén)與進(jìn)階經(jīng)典教程》
希望本文所述對(duì)大家Python程序設(shè)計(jì)有所幫助。
相關(guān)文章
python進(jìn)程管理工具supervisor安裝使用
supervisor是一個(gè)用python語(yǔ)言編寫(xiě)的進(jìn)程管理工具,它可以很方便的監(jiān)聽(tīng)、啟動(dòng)、停止、重啟一個(gè)或多個(gè)進(jìn)程,本文給大家介紹python進(jìn)程管理工具supervisor安裝使用配置教程,感興趣的朋友一起看看吧2023-08-08
如何使用python傳入不確定個(gè)數(shù)參數(shù)
這篇文章主要介紹了如何使用python傳入不確定個(gè)數(shù)參數(shù),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-02-02
Django admin實(shí)現(xiàn)TextField字段changelist頁(yè)面換行、空格正常顯示
本文主要介紹了Django admin實(shí)現(xiàn)TextField字段changelist頁(yè)面換行、空格正常顯示,文中通過(guò)示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-01-01
pycharm2022.2遠(yuǎn)程連接服務(wù)器調(diào)試代碼實(shí)現(xiàn)
本文主要介紹了pycharm2022.2遠(yuǎn)程連接服務(wù)器調(diào)試代碼實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2023-02-02
Python imageio讀取視頻并進(jìn)行編解碼詳解
今天小編就為大家分享一篇Python imageio讀取視頻并進(jìn)行編解碼詳解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2019-12-12
Python中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ò),本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-08-08

