C#設計模式-Factory 方法(總結)

來源:互聯網
上載者:User

在下列情況下,應該考慮使用Factory 方法:

1.一個類無法預測它要建立的對象屬於那一個類。

2.一個類用它的子類來指定所建立的對象。

3.把要建立那一個類的資訊局部化的時候。

簡單的原廠模式也就是有一個類負責決定在單繼承體繫結構中執行個體化那一個子類(又稱衍生類別)。

Factory 方法模式(Factory Method Pattern)對這種思想進行了巧妙的擴充,它不是用一個專門的類來執行個體化那一個子類。相反,超類(又稱基類、父類)把這種決定延遲到每個子類。這種模式實際上沒有決策點,既沒有直接選擇一個子類執行個體化的決策。按這種模式編寫的程式定義了一個抽象類別,它去建立對象,但讓子類決定建立哪一種對象。

如上UML圖,Event為基類,但他並沒有去決定讓任何一個類去負責執行個體化某個子類,而是讓它的子類PrelimEvent或TimedFinalEvent來決定建立哪一種對象,如StralghtSeeding或ClrcleSeeding。

Event及Seeding都為abstract類,讓子類去實現它們的方法。

當然還會有其它一些類,用來儲存物件的類或者功能類。

對於實現原廠模式,還需要考慮幾個問題:

1.基類是一個抽象類別,模式必須返回一個完整的可工作的類。

2.積累包含預設方法,除非預設方法不能勝任,才會調用這些方法。

3.可以將參數傳遞給工廠,告訴工廠返回那一個類型的類。這種情況下,類可以共用相同的方法名,但完成工作可以不同。

對於Factory 方法,很多地方還很模糊,想用到實際應用中,還需大量的思考判斷,積累經驗。只有不斷的琢磨,才能提高自己!

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.