999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

泛型化的策略模式設(shè)計(jì)

2013-04-12 00:00:00朱仙芝
現(xiàn)代電子技術(shù) 2013年17期

摘 要: 按照GoF的“為變化進(jìn)行設(shè)計(jì)”的原則,以匹配度算法的選擇問題為實(shí)例,將泛型編程技術(shù)應(yīng)用于策略模式設(shè)計(jì)中。首先通過對(duì)低層設(shè)計(jì)的重構(gòu),從諸多匹配度算法中抽取共有的部分,將其泛化為簡(jiǎn)單的函數(shù)對(duì)象,并用這些函數(shù)對(duì)象作為策略模式中的具體策略;再利用泛型技術(shù)構(gòu)建抽象策略和上下文引用關(guān)系。這樣的設(shè)計(jì)很好地解決了策略模式設(shè)計(jì)中的代碼重用和泛化問題。

關(guān)鍵詞: 策略模式; 重構(gòu); 泛型程序設(shè)計(jì); 匹配度算法

中圖分類號(hào): TN711?34 文獻(xiàn)標(biāo)識(shí)碼: A 文章編號(hào): 1004?373X(2013)17?0159?04

0 引 言

面向?qū)ο笠呀?jīng)成為軟件設(shè)計(jì)與開發(fā)的主流技術(shù),它有很多優(yōu)點(diǎn),同時(shí)也有自身難以克服的內(nèi)在弱點(diǎn)。例如,直接用類(Class)作為問題域中的基本抽象和程序設(shè)計(jì)單位,將概念映射成對(duì)象類的方法在本質(zhì)上是非常受限和不足的,這種抽象方法常常導(dǎo)致過于約束的系統(tǒng)設(shè)計(jì)和代碼實(shí)現(xiàn),并且在實(shí)際應(yīng)用中缺乏通用性和運(yùn)行效率[1]。許多基于OOP的通用數(shù)據(jù)結(jié)構(gòu)和算法庫(kù)的設(shè)計(jì)及實(shí)現(xiàn)都帶有諸多缺陷和不足,適應(yīng)不了用戶遇到的各式各樣的數(shù)據(jù)類型(尤其是原始類型和導(dǎo)出類型),并且效率難以提高。

設(shè)計(jì)模式是面向?qū)ο箢I(lǐng)域?yàn)閷?shí)現(xiàn)高級(jí)代碼復(fù)用而總結(jié)出來的各種方案,設(shè)計(jì)模式的目標(biāo)是使對(duì)在特定環(huán)境中良好工作的設(shè)計(jì)能在相似的環(huán)境中被再一次應(yīng)用。然而,設(shè)計(jì)模式同樣無法擺脫面向?qū)ο蠊逃械念B疾[2]。

重構(gòu)是一種保持行為的轉(zhuǎn)換。重構(gòu)過程包括去除重復(fù)、簡(jiǎn)化復(fù)雜邏輯和澄清模糊代碼。重構(gòu)的目的是使設(shè)計(jì)模式的實(shí)現(xiàn)更具有靈活性、有效性和可維護(hù)性。設(shè)計(jì)模式是目的,重構(gòu)則是手段;設(shè)計(jì)模式是重構(gòu)的結(jié)果,并為重構(gòu)提供了目標(biāo)[3]。然而,重構(gòu)改進(jìn)設(shè)計(jì)模式的技術(shù)在設(shè)計(jì)模式泛化方面仍然存在問題[4]。

正是針對(duì)上述不足,泛型程序設(shè)計(jì)(Generic Programming,GP)應(yīng)運(yùn)而生。GP是一種以需求為中心的程序設(shè)計(jì)范式,作為面向?qū)ο蟪绦蛟O(shè)計(jì)技術(shù)的補(bǔ)充和擴(kuò)展,能夠克服先前程序設(shè)計(jì)中的所有主要困難,實(shí)現(xiàn)真正的通用和高效的數(shù)據(jù)結(jié)構(gòu)和算法庫(kù)[5?6]。然而,國(guó)內(nèi)目前對(duì)泛型程序設(shè)計(jì)的研究和應(yīng)用主要是通過一些泛型程序庫(kù)(Standard Template Library,STL)的譯著來引進(jìn)和介紹泛型程序設(shè)計(jì)的基本思想和方法[2]。

本文的研究目的是探討如何將設(shè)計(jì)模式、重構(gòu)技術(shù)、泛型程序設(shè)計(jì)技術(shù)等有機(jī)地結(jié)合起來,使設(shè)計(jì)模式更加泛化。在本文的實(shí)踐中將策略模式、函數(shù)作為對(duì)象和泛型程序設(shè)計(jì)及重構(gòu)的思想結(jié)合起來,以模糊識(shí)別系統(tǒng)中的多種匹配度算法的選擇為實(shí)例,做到了為變化進(jìn)行模式設(shè)計(jì)的目的。通過對(duì)低層設(shè)計(jì)的轉(zhuǎn)換,利用重構(gòu)改進(jìn)策略模式,利用Java SE5提出的泛型方法設(shè)計(jì)策略模式,使策略模式更加泛化。實(shí)現(xiàn)在運(yùn)行時(shí)根據(jù)客戶要求,動(dòng)態(tài)組合生成匹配度算法。不但使算法的選擇和算法的實(shí)現(xiàn)相分離,去除了大量的重復(fù)代碼,澄清了代碼的意圖,而且也容易增加新的算法,獲得了更好的靈活性。

1 將匹配度算法重構(gòu)為策略模式

在設(shè)計(jì)一個(gè)模糊識(shí)別系統(tǒng)時(shí),通常有多種匹配度算法供選擇。例如:貼近度算法、語義距離算法(如:海明距離、歐幾里德距離、切比雪夫距離、明可夫斯基距離)和相似度算法(如:最大最小法、算術(shù)平均法、幾何平均法、指數(shù)法、相關(guān)系數(shù)法)等。當(dāng)客戶發(fā)出需要某種算法的請(qǐng)求時(shí),系統(tǒng)可以根據(jù)客戶發(fā)出的請(qǐng)求或被處理的數(shù)據(jù)對(duì)算法做出選擇。解決這個(gè)問題的設(shè)計(jì)模式可以使用圖1所示的策略模式[7?8]。在圖1中的每一個(gè)具體策略(Concrete Strategy)就是一個(gè)對(duì)象類的方法。然而,就匹配度問題而言,可以看到,如果直接使用策略模式,則封裝了相關(guān)算法的每一個(gè)具體策略角色中將出現(xiàn)大量重復(fù)代碼,使系統(tǒng)非常臃腫。

為了降低對(duì)系統(tǒng)的整體影響,減少子系統(tǒng)之間的相互依賴關(guān)系,使得復(fù)用更加靈活,GoF為變化進(jìn)行設(shè)計(jì)的原則[8]中有:“針對(duì)接口編程,而不是針對(duì)實(shí)現(xiàn)編程”;“優(yōu)先使用對(duì)象組合,而不是類繼承”;“考慮設(shè)計(jì)中哪些是可變的,進(jìn)行封裝”。使用這種設(shè)計(jì)原則不但可以減少重復(fù)代碼,而且在處理新的需要時(shí),不會(huì)使設(shè)計(jì)和實(shí)現(xiàn)的開銷嚴(yán)重增大。從而實(shí)現(xiàn)強(qiáng)內(nèi)聚,松耦合設(shè)計(jì)目的。

2 匹配度算法的泛型策略模式設(shè)計(jì)

策略模式屬于對(duì)象的行為模式,其用意是針對(duì)一組算法,將每一個(gè)算法封裝到具有共同接口的獨(dú)立的類中,從而使得它們可以相互替換,算法的增加不會(huì)改變未增加算法前的客戶端的調(diào)用代碼。策略模式設(shè)計(jì)包括定義抽象策略角色、環(huán)境角色和具體策略角色三個(gè)步驟。非泛型的策略模式的設(shè)計(jì)的主要問題是對(duì)封裝的算法進(jìn)行限制,使得抽象策略角色、環(huán)境角色的通用性、靈活性和擴(kuò)展性都比較差。為解決這些不足,可將策略模式改進(jìn)為泛型策略模式。選擇匹配度算法的泛型策略模式設(shè)計(jì)如下:

2.1 定義具體策略角色

2.2 定義具有泛型的抽象策略角色

2.3 定義具有泛型的環(huán)境角色

環(huán)境角色(Context)通過泛型抽象策略角色接口來調(diào)用具體策略類。Context通過類型為Strategy的引用使用特定的Concrete Strategy。設(shè)計(jì)Context角色是組合對(duì)象,針對(duì)接口編程的過程,是整個(gè)設(shè)計(jì)的核心。Context作為上下文類,如圖1所示,對(duì)上與客戶端交互,對(duì)下與Strategy交互。當(dāng)客戶端選擇一個(gè)Concrete Strategy類的對(duì)象后,則把它傳遞給Context類的對(duì)象,然后,Context類的對(duì)象把客戶端的請(qǐng)求轉(zhuǎn)發(fā)給Strategy。

3 應(yīng)用舉例

4 結(jié) 論

本文采用泛型策略模式解決匹配度算法的選擇問題,其特點(diǎn)是將設(shè)計(jì)模式、重構(gòu)技術(shù)、泛型技術(shù)及為變化進(jìn)行模式設(shè)計(jì)的技術(shù)相結(jié)合,用函數(shù)對(duì)象作為具體策略,對(duì)設(shè)計(jì)中的可變對(duì)象進(jìn)行封裝,再利用重構(gòu)思想改進(jìn)具體策略。用泛型技術(shù)使抽象策略角色的設(shè)計(jì)和環(huán)境角色的設(shè)計(jì)更加泛化。在環(huán)境角色的設(shè)計(jì)中,通過組合對(duì)象、針對(duì)接口編程和使用泛型的編程方法,實(shí)現(xiàn)了算法的選擇和算法的實(shí)現(xiàn)相分離。通過兩個(gè)循環(huán)設(shè)計(jì)不但解決了任意選用函數(shù)對(duì)象的問題,而且解決了泛型集合的運(yùn)算問題。該設(shè)計(jì)消除了選擇所需要的匹配算法的條件語句,可以很方便地動(dòng)態(tài)改變算法或行為。該設(shè)計(jì)結(jié)構(gòu)清晰,代碼簡(jiǎn)單,重復(fù)代碼少,通用性、靈活性好,泛化強(qiáng)度高,具有更好的應(yīng)用價(jià)值。

泛型策略模式的缺點(diǎn)是策略模式造成很多的具體策略類;客戶端必須知道所有的具體策略類,并自行決定使用哪一個(gè)具體策略類。這就意味著客戶端必須理解這些算法的區(qū)別,以便適時(shí)選擇恰當(dāng)?shù)乃惴ā?/p>

參考文獻(xiàn)

[1] 孫斌.面向?qū)ο蟆⒎盒统绦蛟O(shè)計(jì)與類型約束檢查[J].計(jì)算機(jī)學(xué)報(bào),2004,27(11):1492?1503.

[2] 陳葉旺,余金山.泛型編程與設(shè)計(jì)模式[J].計(jì)算機(jī)科學(xué),2006,33(4):253?257.

[3] [美]JOSHUA K.重構(gòu)與模式[M].楊光,劉基誠(chéng),譯.北京:人民郵電出版社,2007.

[4] 亞軍,于萬明.基于設(shè)計(jì)模式的重構(gòu)技術(shù)[J].計(jì)算機(jī)應(yīng)用研究,2003(12):42?47.

[5] [美]ECKEL B. Java編程思想[M].陳昊鵬,譯.北京:機(jī)械工業(yè)出版社,2007.

[6] TORGERSEN M, HANSEN C P, ERNST E, et al. Adding wildcards to the Java programming language [C]// Proceedings of the 2004 ACM Symposium on Applied Computing. New York,USA: ACM, 2004: 1289?1296.

[7] 楊年華,張禮平.Java類庫(kù)中的策略模式[J].計(jì)算機(jī)應(yīng)用與軟件,2004,21(1):128?130.

[8] GAMMA E, HELM R, JOHNSON R, et al. Design patterns: elements of reusable object?oriented software [M]. Boston: Addison?Wesley Professional, 1995.

作者簡(jiǎn)介:朱仙芝 女,1963年出生,實(shí)驗(yàn)師。主要研究方向?yàn)橛?jì)算機(jī)程序設(shè)計(jì)與應(yīng)用。

主站蜘蛛池模板: 精品无码一区二区三区在线视频| 国产真实乱人视频| 女人毛片a级大学毛片免费| 国产原创第一页在线观看| 国产成人精品2021欧美日韩| 美女免费精品高清毛片在线视| 亚洲高清在线天堂精品| 又爽又大又光又色的午夜视频| 人妻精品久久久无码区色视| 亚洲综合第一区| 欧美日韩在线亚洲国产人| 国产99免费视频| 国产亚洲精品精品精品| 亚洲日韩图片专区第1页| 亚洲欧美h| 国产噜噜噜| 亚洲AⅤ无码国产精品| 国产欧美精品午夜在线播放| 久久国产热| 色噜噜综合网| 国产微拍精品| 亚洲综合精品香蕉久久网| 伊人久久大香线蕉影院| 国产在线精品人成导航| 日韩精品久久久久久久电影蜜臀| 2021最新国产精品网站| 成人在线欧美| 老司国产精品视频91| 国产一区二区三区免费观看| 日本尹人综合香蕉在线观看| 国产第四页| 91久久国产综合精品女同我| 成人免费视频一区| 无码电影在线观看| 亚洲人成成无码网WWW| 九九热这里只有国产精品| 中文字幕日韩久久综合影院| 国内精自视频品线一二区| 黄色网页在线播放| 免费在线a视频| 大学生久久香蕉国产线观看| 亚洲三级成人| 国产成a人片在线播放| 四虎国产永久在线观看| 少妇精品久久久一区二区三区| 广东一级毛片| 国产成人精品无码一区二| 一区二区三区国产精品视频| 亚洲综合日韩精品| 2022国产91精品久久久久久| 国产男女XX00免费观看| 国产精品乱偷免费视频| 亚洲AV成人一区国产精品| 青青草一区二区免费精品| 男人天堂伊人网| 日韩黄色在线| 中文字幕免费在线视频| 五月天天天色| 久久精品国产电影| 怡春院欧美一区二区三区免费| 国产伦片中文免费观看| 久久精品丝袜| 欧美亚洲一区二区三区在线| 国产自在线拍| 国产视频一二三区| 在线色国产| 再看日本中文字幕在线观看| 日韩精品一区二区深田咏美| 国产人人乐人人爱| 亚洲人人视频| Jizz国产色系免费| 四虎精品免费久久| 国产成人免费| 国内丰满少妇猛烈精品播| 精品久久久久久成人AV| 亚洲国产中文在线二区三区免| 亚洲九九视频| 九色视频线上播放| 亚洲天堂视频在线观看免费| 亚洲黄网在线| 99尹人香蕉国产免费天天拍| 伊人丁香五月天久久综合|