設計模式一:工廠模式
什麼是工廠模式
根據提供的信息,在工廠的處理下,返回給想要的結果。
比如,甲方給工廠提供一個外形要求,及外形是鴨子。工廠裏有許許多多的模具,有鴨子,小狗,小貓等等。工廠在接到要求後,根據要求選擇出鴨子的模具返回給了甲方。
使用特點
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')