本文實例講述了python設計模式之工廠方法模式。分享給大家供大家參考,具體如下:
工廠方法模式(factory method pattern):定義一個用于創建對象的接口,讓子類決定實例化哪一個類,工廠方法使一個類的實例化延時到其子類.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
|
#!/usr/bin/env python # -*- coding:utf-8 -*- __author__ = 'andy' """ 大話設計模式 設計模式——工廠方法模式 工廠方法模式(factory method pattern):定義一個用于創建對象的接口,讓子類決定實例化哪一個類,工廠方法使一個類的實例化延時到其子類. 工廠方法模式克服了簡單工廠模式違背開放-封閉原則的缺點,又保持了封裝對象創建過程的優點 場景:雷鋒工廠,不關心執行者,只關心執行結果 """ class leifeng( object ): def sweep( self ): print "掃地" def wash( self ): print "洗衣" def buyrice( self ): print "買米" class ifactory(leifeng): def createleifeng( self ): pass #大學生 class undergraduate(leifeng): pass #新增社區服務者 class volunteer(leifeng): pass # 學習雷鋒的大學生工廠 class undergraduatefactory(ifactory): def createleifeng( self ): return undergraduate() #新增一個社區服務者的工廠e class volunteerfactory(ifactory): def createleifeng( self ): return volunteer() if __name__ = = "__main__" : student = undergraduatefactory() volunteer = volunteerfactory() student.buyrice() student.sweep() volunteer.wash() |
運行結果:
買米
掃地
洗衣
上面類的設計如下圖:
創建一個抽象工廠類createleifeng和一個抽象對象類leifeng,當創建具體leifeng對象-undergradiate去dosomething時,使用繼承抽象工廠的undergraduatefactory工廠類,該類返回一個undergradiate實例,如果還要去做另一個dosomething時,再創建一個volunteerfactory工廠方法創建創建一個volunteer實例就可以了
希望本文所述對大家python程序設計有所幫助。
原文鏈接:https://www.cnblogs.com/onepiece-andy/p/python_factory_method_pattern.html