溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

web工廠方法是什么

發(fā)布時間:2022-01-13 16:58:32 來源:億速云 閱讀:142 作者:iii 欄目:大數(shù)據(jù)

這篇文章主要講解了“web工廠方法是什么”,文中的講解內(nèi)容簡單清晰,易于學(xué)習(xí)與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學(xué)習(xí)“web工廠方法是什么”吧!

動機(jī)

框架使用抽象類定義和維護(hù)對象之間的關(guān)系。這些對象的創(chuàng)建通常也由框架負(fù)責(zé)。

面向?qū)ο缶幊毯芏鄨龊掀鋵嵕褪菍Τ橄箢惥幊獭N覀兛梢哉J(rèn)為,抽象類+抽象類之間的協(xié)作構(gòu)成了架構(gòu)。在這樣的架構(gòu)中,通常也會包含對象的創(chuàng)建部分。

考慮這樣一個應(yīng)用框架,它可以向用戶顯示多個文檔。在這個框架中,兩個主要的抽象是類Application和Document。這兩個類都是抽象的,客戶必須通過它們的子類來做與具體應(yīng)用相關(guān)的實現(xiàn)。例如,為創(chuàng)建一個繪圖應(yīng)用,我們定義類DrawingApplication和DrawingDocument。Application類負(fù)責(zé)管理Document并根據(jù)需要創(chuàng)建它們 — 例如,當(dāng)用戶從菜單中選擇Open或New的時候。

這個例子,可以參考Office。Excel和Word的具體操作有很大的不同,但是如果從抽象的角度來看,Word和Excel都可以看作Application,而Word文檔和Excel文檔都可以抽象為Document。有了這樣的觀點(diǎn)之后,文件打開,關(guān)閉,保存,內(nèi)容拷貝,粘貼等操作就構(gòu)成了微軟的應(yīng)用程序開發(fā)架構(gòu)。有了這個架構(gòu)之后,就可以利用它開發(fā)自己的應(yīng)用,例如繪圖軟件。這是由于大量的共通部分已經(jīng)完成,開發(fā)者只要根據(jù)具體的需求提供相應(yīng)的具象類就可以很快地開發(fā)出自己的應(yīng)用了。

用戶通過應(yīng)用菜單選擇打開或創(chuàng)建文件時,架構(gòu)(實際上是Application)有義務(wù)創(chuàng)建相應(yīng)的對象。

因為被實例化的特定Document子類是與特定應(yīng)用相關(guān)的,所以Application類不可能預(yù)測到哪個Document子類將被實例化 —Application類僅知道一個新的文檔何時應(yīng)被創(chuàng)建,而不知道哪一種Document將被創(chuàng)建。這就產(chǎn)生了一個尷尬的局面:框架必須實例化類,但是它只知道不能被實例化的抽象類。

由于架構(gòu)代碼都是先于應(yīng)用構(gòu)建的,所以抽象的Application不可能知道具象的Document類的類型。也就是說架構(gòu)需要實例化某些類,卻不知道實際需要實例化的類型。

Factory Method模式提供了一個解決辦案。它封裝了哪一個Document子類將被創(chuàng)建的信息并將這些信息從該框架中分離出來,如下頁上圖所示。

為了解決這個問題,工廠方法模式提供了一種將創(chuàng)建具象Document類的部分從架構(gòu)中分離出來的方法。

web工廠方法是什么

Application的子類重定義Application的抽象操作CreateDocument以返回適當(dāng)?shù)腄ocument子類對象。一旦一個Application子類實例化以后,它就可以實例化與應(yīng)用相關(guān)的文檔,而無需知道這些文檔的類。我們稱CreateDocument是一個工廠方法(factorymethod),因為它負(fù)責(zé)“生產(chǎn)”一個對象。

首先在抽象Application類中定義抽象操作返回抽象Document的CreateDocument操作并在架構(gòu)中使用。在開發(fā)具體應(yīng)用時實現(xiàn)一個構(gòu)建具象Document的具象Acpplication類并將其引入架構(gòu)中。這個創(chuàng)建對象的方法就是工廠方法。

感謝各位的閱讀,以上就是“web工廠方法是什么”的內(nèi)容了,經(jīng)過本文的學(xué)習(xí)后,相信大家對web工廠方法是什么這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是億速云,小編將為大家推送更多相關(guān)知識點(diǎn)的文章,歡迎關(guān)注!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

web
AI