標籤:
原廠模式是一個在軟體開發中用來建立對象的設計模式。
原廠模式包涵一個超類。這個超類提供一個抽象化的介面來建立一個特定類型的對象,而不是決定哪個對象可以被建立。
為了實現此方法,需要建立一個工廠類建立並返回。
當程式運行輸入一個“類型”的時候,需要建立於此相應的對象。這就用到了原廠模式。在如此情形中,實現代碼基於原廠模式,可以達到可擴充,可維護的代碼。當增加一個新的類型,不在需要修改已存在的類,只增加能夠產生新類型的子類。
簡短的說,當以下情形可以使用原廠模式:
1.不知道使用者想要建立什麼樣的對象
2.當你想要建立一個可擴充親和性在建立類與支援建立對象的類之間。
一個例子更能很好的理解以上的內容:
- 我們有一個基類Person ,包涵擷取名字,性別的方法 。有兩個子類male 和female,可以打招呼。還有一個工廠類。
- 工廠類有一個方法名getPerson有兩個輸入參數,名字和性別。
- 使用者使用工廠類,通過調用getPerson方法。
在程式運行期間,使用者傳遞性別給工廠,工廠建立一個與性別有關的對象。因此工廠類在運行期,決定了哪個對象應該被建立。
class Person: def __init__(self): self.name = None self.gender = None def getName(self): return self.name def getGender(self): return self.genderclass Male(Person): def __init__(self, name): print "Hello Mr." + nameclass Female(Person): def __init__(self, name): print "Hello Miss." + nameclass Factory: def getPerson(self, name, gender): if gender == ‘M‘: return Male(name) if gender == ‘F‘: return Female(name)if __name__ == ‘__main__‘: factory = Factory() person = factory.getPerson("Chetan", "M")
python 模式之原廠模式