Python 工廠方法
我們可能並不總是知道我們想要提前建立什麼型別的物件。
某些物件只能在使用者請求後的執行時建立。
你可以使用工廠方法的應用場景如下 :
- 使用者可以點選建立物件的特定按鈕。
- 使用者可以建立幾個不同型別的新文件。
- 如果使用者啟動 web 瀏覽器,則瀏覽器不會預先知道將開啟多少個選項卡(每個選項卡都是物件)。
Python 工廠方法模式
為了解決這個問題,我們可以使用工廠方法模式。
我們的想法是擁有一個函式,即 factory
,它接受一個輸入字串並輸出一個物件。
obj = Car.factory("Racecar")
obj.drive()
**關鍵注意點 : 工廠方法返回(新)物件。
物件的型別取決於你指定的輸入字串的型別。這種技術可以使你的程式更容易擴充套件。新程式設計師可以通過新增新的字串和類輕鬆新增功能,而無需閱讀所有原始碼。
工廠方法示例
下面的示例演示了一種工廠方法。工廠方法 factory
根據輸入返回任一型別的新物件。
class Car(object):
def factory(type):
if type == "Racecar":
return Racecar()
if type == "Van":
return Van()
assert 0, "Bad car creation: " + type
factory = staticmethod(factory)
class Racecar(Car):
def drive(self): print("Racecar driving.")
class Van(Car):
def drive(self): print("Van driving.")
obj = Car.factory("Racecar")
obj.drive()
輸出:
Racecar driving.