Factory Method 模式難點解析

首先大家要知道什麼是框架,爲什麼使用框架,明白了這個後,大家就知道Factory Method誕生的原因了。

什麼是框架?

1 、是一組相關類的集合。

2、具有通用性。

3、是半成品。

我們爲什麼使用框架?

因爲框架是半成品,所以我們使用框架可以降低我們的開發成本,提升開發效率。

Factory Method誕生的原因

假如我們要開發一個框架,因爲框架具有通用性,半成品的特點,所以凡是具體應用中常用到的操作,我們都要儘可能的完成,降低具體應用的開發成本,否則這個框架就會失去生命力,被淘汰。而像打開文檔這樣的操作,基本每個文檔應用都會用到,比如WORD、EXCEL等,因此,我們就有必要把這個操作集成到框架中。但是現在有一個問題,這個問題就是:通常每種文檔的格式都是特定的,因此對它的操作一定是一個特定的文檔類,但是框架在處理打開文檔消息的時候,框架並不知道你要打開什麼格式的文檔,這時有些同學可能會說,這個好辦,我們只要彈出一個對話框,讓用戶選擇一個文檔,我們就可以根據用戶選擇的文檔來確定文檔的類型了,然後就可以使用與它相關的類打開這個文檔了。如果這樣設計框架,這個框架就會失去通用性,並且市面上每出現一種新的文檔格式,框架就必須要快速更新,否則就會失去競爭力,但是如果不讓用戶來確定文檔的類型,我們該創建哪個文檔類來操作那種文檔類型呢?而框架又要完成打開文檔這樣通用操作的大部分工作,因此,老外想到了多態,它們把所有對具體文檔的操作抽象出來,但是並不實現具體的操作,然後框架中使用這個抽象的文檔類來完成文檔的打開,這樣框架就脫離了具體的應用,又能完成所有具體應用通用操作的大部分工作,這就是Factory Method誕生的原因。

什麼是Factory Method模式?

Factory Method模式使用一組抽象類來設計框架。

Product角色

Product代表的就是抽象文檔類,這個類定義了具體文檔類的通用操作,比如創建文檔,打開文檔,保存文檔等通用操作,但是它不實現這些操作。

ConcreteProduct角色

它代表的是具體的文檔類,比如操作WORD文件的文檔類。它必須具化Product,因爲框架使用的是Product。

Creator角色

它代表框架中的抽象Application類,因爲這個Application要響應打開文檔消息,所以它定義了一個抽象的接口,比如OpenDocument,但是不需要實現,只是爲了框架邏輯的業務處理,GOF把這個抽象的方法稱爲工廠方法。

ConcreteCreator角色

它代表具體的Application類,比如我們使用框架創建一個應用,我們的應用必須派生於框架中的Application類,這個具化的Application就是ConcreteCreator,它必須實現Creator中的工廠方法。

好了,我能說的就這些,希望對大家有用。

 

 

 

 

 

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章