python 模式之原廠模式

來源:互聯網
上載者:User

標籤:

原廠模式是一個在軟體開發中用來建立對象的設計模式。

原廠模式包涵一個超類。這個超類提供一個抽象化的介面來建立一個特定類型的對象,而不是決定哪個對象可以被建立。

為了實現此方法,需要建立一個工廠類建立並返回。 

當程式運行輸入一個“類型”的時候,需要建立於此相應的對象。這就用到了原廠模式。在如此情形中,實現代碼基於原廠模式,可以達到可擴充,可維護的代碼。當增加一個新的類型,不在需要修改已存在的類,只增加能夠產生新類型的子類。

 

簡短的說,當以下情形可以使用原廠模式:

1.不知道使用者想要建立什麼樣的對象

2.當你想要建立一個可擴充親和性在建立類與支援建立對象的類之間。

 

一個例子更能很好的理解以上的內容:

  1. 我們有一個基類Person ,包涵擷取名字,性別的方法 。有兩個子類male 和female,可以打招呼。還有一個工廠類。
  2.  工廠類有一個方法名getPerson有兩個輸入參數,名字和性別。
  3.  使用者使用工廠類,通過調用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 模式之原廠模式

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.