假設(shè)有一個(gè)繪圖程序允許用戶在一個(gè)畫布上繪制各種圖形,如三角形、矩形和圓等,很自然地抽象圖形的繼承體系,如圖2-2所示。

這個(gè)圖形繼承體系的設(shè)計(jì)大致如下:" />

国产成人精品无码青草_亚洲国产美女精品久久久久∴_欧美人与鲁交大毛片免费_国产果冻豆传媒麻婆精东

18143453325 在線咨詢 在線咨詢
18143453325 在線咨詢
所在位置: 首頁 > 營(yíng)銷資訊 > 營(yíng)銷百科 > 虛擬函數(shù)實(shí)例展示

虛擬函數(shù)實(shí)例展示

時(shí)間:2023-03-26 13:00:01 | 來源:營(yíng)銷百科

時(shí)間:2023-03-26 13:00:01 來源:營(yíng)銷百科

虛擬函數(shù)實(shí)例展示:下面通過一個(gè)簡(jiǎn)單的實(shí)例來展示這一優(yōu)點(diǎn)。

假設(shè)有一個(gè)繪圖程序允許用戶在一個(gè)畫布上繪制各種圖形,如三角形、矩形和圓等,很自然地抽象圖形的繼承體系,如圖2-2所示。

這個(gè)圖形繼承體系的設(shè)計(jì)大致如下:

為簡(jiǎn)單起見,讓每個(gè)Shape對(duì)象都支持'繪制'和'旋轉(zhuǎn)'操作,每個(gè)Shape的派生類對(duì)這兩個(gè)操作都有自己的實(shí)現(xiàn):

再來考慮這個(gè)圖形繼承體系的使用,這里很自然的一個(gè)使用者是畫布,設(shè)計(jì)其類名為'Canvas':

Canvas類中維護(hù)一個(gè)包含所有圖形的shapes,Canvas類在處理自己的業(yè)務(wù)邏輯時(shí)并不關(guān)心shapes實(shí)際上都是哪些具體的圖形;相反,如①處和②處所示,它只將這些圖形作為一個(gè)抽象,即Shape。在處理每個(gè)Shape時(shí),調(diào)用每個(gè)Shape的某個(gè)操作即可。

這樣做的一個(gè)好處是當(dāng)圖形繼承體系發(fā)生變化時(shí),作為圖形繼承體系的使用者Canvas而言,它的改變幾乎沒有,或者很小。

比如說,在程序的演變過程中發(fā)現(xiàn)需要支持多邊型(Polygon)和貝塞爾曲線(Bezier)類型,只需要在圖形繼承體系中增加這兩個(gè)新類型即可:

而不必修改Canvas的任何代碼,程序即可像以前那樣正常運(yùn)行。同理,如果以后發(fā)現(xiàn)不再支持某種類型,也只需要將其從圖形繼承體系中刪除,而不必修改Canvas的任何代碼??梢钥吹?,從對(duì)象繼承體系的使用者(Canvas)的角度來看,它只看到Shape對(duì)象,而不必關(guān)心到底是哪一種特定的Shape,這是面向?qū)ο笤O(shè)計(jì)的一個(gè)重要特點(diǎn)和優(yōu)點(diǎn)。

關(guān)鍵詞:展示,實(shí)例,函數(shù),虛擬

74
73
25
news

版權(quán)所有? 億企邦 1997-2025 保留一切法律許可權(quán)利。

為了最佳展示效果,本站不支持IE9及以下版本的瀏覽器,建議您使用谷歌Chrome瀏覽器。 點(diǎn)擊下載Chrome瀏覽器
關(guān)閉