Python設計模式:工廠模式

設計模式一:工廠模式

什麼是工廠模式

根據提供的信息,在工廠的處理下,返回給想要的結果。
比如,甲方給工廠提供一個外形要求,及外形是鴨子。工廠裏有許許多多的模具,有鴨子,小狗,小貓等等。工廠在接到要求後,根據要求選擇出鴨子的模具返回給了甲方。

使用特點

1.請求一個對象,而無需知道這個對象來自哪裏,簡化對象的創建
2.可以通過工廠模式來對相似的對象創建進行分組
3.可以創建多個工廠,每個工廠負責一個任務

使用場景

1.應用創建的對象代碼分佈在多個不同的地方,而不是在一個函數/方法中,無法跟蹤這些對象
2.需要將對象的創建和使用解耦
3.考慮提高性能和內存使用率,在必要時創建新的對象(直接實例化創建對象會分配額外內存)

實例代碼

class MP3:
    def __init__(self,filepath):
        self.playdata = filepath[:-4]

    def play(self):
        return self.playdata

class MP4:
    def __init__(self,filepath):
        self.playdata = filepath[:-4]

    def play(self):
        return self.playdata

def Play_Factory(filepath):
    if filepath[-3:] == 'mp3':
        machine = MP3(filepath)
    elif filepath[-3:] == 'mp4':
        machine = MP4(filepath)
    return machine

#對工廠方法進行了包裝,添加異常處理
def Play_machine(filepath):
    machine = None
    try:
        machine = Play_Factory(filepath)
    except BaseException as ve:
        print(ve)
    return machine

if __name__ == "__main__":
    music = Play_machine('lalalalala.mp3')
    data = music.play()
    print('music data is {}'.format(data))
    move = Play_machine('dadadadadada.mp4')
    data = move.play()
    print('move data is {}'.format(data))
    game = Play_machine('dadadadadada.exe')
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章