真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

“HeadFirst設(shè)計模式“:策略模式

策略模式

成都創(chuàng)新互聯(lián)公司主要從事成都網(wǎng)站建設(shè)、網(wǎng)站制作、網(wǎng)頁設(shè)計、企業(yè)做網(wǎng)站、公司建網(wǎng)站等業(yè)務(wù)。立足成都服務(wù)龍灣,10余年網(wǎng)站建設(shè)經(jīng)驗,價格優(yōu)惠、服務(wù)專業(yè),歡迎來電咨詢建站服務(wù):18982081108

問題的描述:

需求:開發(fā)一個鴨子游戲,能游泳,有外觀,實現(xiàn)類圖如下:

“Head First 設(shè)計模式“ :策略模式“Head First 設(shè)計模式“ :策略模式

增加的需求:

1. 加入飛行功能

2. 加入呱呱叫的功能。。。等等,暫時的解決方式如下:

“Head First 設(shè)計模式“ :策略模式“Head First 設(shè)計模式“ :策略模式

上線后出現(xiàn)了些問題:

1. 所有的鴨子都能叫嗎?木頭鴨子呢?

2. 所有的鴨子都能飛嗎?木頭鴨子呢?橡皮鴨子呢?


總結(jié)下,使用繼承的缺點:

  1. 代碼在多個子類中重復(fù)

  2. 運行時的行為不容易改變

  3. 很難知道鴨子的全部行為

  4. 改變會牽一發(fā)動全身,造成其他鴨子不想要的改變

  5. 。。。

好吧,我們引入接口來進(jìn)一步修改,類圖如下:

“Head First 設(shè)計模式“ :策略模式“Head First 設(shè)計模式“ :策略模式

問題已經(jīng)解決了,但是鴨子子類有40多種,我們修改fly方法,難道修改40種樣本?以后的維護(hù)的坑有點大哦!


總結(jié)下,這種方式的缺點:

  1. 代碼在多個子類中重復(fù)

  2. 維護(hù)成本提高(有40個子鴨子類,要修改fly方法需要改40次?)

  3. 。。。

問題不斷,我們用設(shè)模式來解決這個問題,先看看定義:策略模式:定義算法族,分別封裝起來,它們之間可以互相替換,此模式讓算法的變化獨立于使用算法的客戶。

好,我們修改下,類圖如下:

“Head First 設(shè)計模式“ :策略模式“Head First 設(shè)計模式“ :策略模式

我們用這個模式解決了:

1. 鴨子行為的各種各樣性(子類行為和超類沒有直接的關(guān)系了,添加刪除行為不影響繼承體系)

2. 代碼重用,維護(hù)問題(子類太多時修改行為特別麻煩,代碼重復(fù),只修改算算法組就搞定)

3. 動態(tài)修改行為(Setter和Getter方法來靈活配置行為)

4. 。。。

這章我們學(xué)到的設(shè)計原則:

設(shè)計原則1: 封裝變化(找出應(yīng)用中可能需要變化之處,把它們獨立出來,不要和那些不需要變化的代碼混在一起)。

設(shè)計原則2: 針對接口編程,而不是針對實現(xiàn)類

設(shè)計原則3: 多用組合,少用繼承



網(wǎng)站欄目:“HeadFirst設(shè)計模式“:策略模式
文章地址:http://weahome.cn/article/poshph.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部