設(shè)計(jì)模式基本思想
更新時(shí)間: 2007-05-24 11:25:15來(lái)源: 粵嵌教育瀏覽量:840
好的系統(tǒng)設(shè)計(jì)追求如下特性:
可擴(kuò)展性( Extensibility ):新的功能或特性很容易加入到系統(tǒng)中來(lái);
靈活性( Flexibility ):可以允許代碼修改平穩(wěn)發(fā)生,對(duì)一處的修改不會(huì)波及到很多其他模塊;
可插入性( Pluggability ):可以很容易地將一個(gè)類或組件抽出去,同時(shí)將另一個(gè)有相同接口的類 / 接口加入進(jìn)來(lái)。
具有如上特性的系統(tǒng)才有真正的可維護(hù)性和可復(fù)用性。而可維護(hù)性和可復(fù)用性對(duì)一個(gè)持續(xù)接入新需求,現(xiàn)有功能逐步完善,新功能不斷豐富,版本不會(huì)終止的大型軟件產(chǎn)品來(lái)說(shuō)至關(guān)重要。
傳統(tǒng)的復(fù)用包括:代碼的 copy 復(fù)用,算法的復(fù)用,數(shù)據(jù)結(jié)構(gòu)的復(fù)用。
在面向?qū)ο箢I(lǐng)域,數(shù)據(jù)的抽象化、封裝、繼承和多態(tài)性是幾項(xiàng)重要的語(yǔ)言特性,這些特性使得一個(gè)系統(tǒng)可以在更高的層次上提供可復(fù)用性。數(shù)據(jù)的抽象化和繼承關(guān)系使得概念和定義可以復(fù)用;多態(tài)性使得實(shí)現(xiàn)和應(yīng)用可以復(fù)用;而抽象化和封裝可以保持和促進(jìn)系統(tǒng)的可維護(hù)性。這樣,復(fù)用的焦點(diǎn)不再集中在函數(shù)和算法等具體實(shí)現(xiàn)細(xì)節(jié)上,而是集中在重要的宏觀的業(yè)務(wù)邏輯的抽象層次上。復(fù)用焦點(diǎn)的倒轉(zhuǎn)不是因?yàn)閷?shí)現(xiàn)細(xì)節(jié)的復(fù)用不再重要,而是因?yàn)檫@些細(xì)節(jié)上的復(fù)用往往已經(jīng)做的很好(例如,很容易找到并應(yīng)用成熟的數(shù)據(jù)結(jié)構(gòu)類庫(kù)等),而真正沖擊系統(tǒng)的是其要實(shí)現(xiàn)業(yè)務(wù)的千變?nèi)f化。
本質(zhì)上說(shuō),如果說(shuō)一個(gè)軟件的需求是永不變更或發(fā)展的,該軟件也就不需要任何設(shè)計(jì),怎么編碼實(shí)現(xiàn)都行,只要需求滿足,性能達(dá)標(biāo)。但事實(shí)上,軟件的本性就是不斷增強(qiáng),不斷拓展的,不斷變化的。我們可以控制指尖流淌出的每行代碼,但控制不了奉為上帝的用戶的需求。編碼結(jié)束,測(cè)試全部通過(guò),用戶在試用過(guò)程中才發(fā)現(xiàn)原來(lái)的需求有問(wèn)題,需要變更或提出新需求,怎么辦?向用戶抗議:需求總在變,沒(méi)法做!?平抑心中的抱怨,加班加點(diǎn)大量的修改代碼,瘋狂的測(cè)試,依然是時(shí)間緊迫,心中沒(méi)底?抑或了然于胸:這個(gè)變更或小需求合理,系統(tǒng)很方便納入;于是坦然地和用戶協(xié)商下一個(gè)交付時(shí)間點(diǎn)?
要使系統(tǒng)的適應(yīng)需求的變更或新增,就必須在其要實(shí)現(xiàn)的宏觀業(yè)務(wù)邏輯的抽象復(fù)用上下功夫。而設(shè)計(jì)模式就是綜合運(yùn)用面向?qū)ο蠹夹g(shù)和特性來(lái)提高業(yè)務(wù)邏輯可復(fù)用性的常用方法和經(jīng)驗(yàn)的提取和匯總。
掌握 23 種設(shè)計(jì)模式的關(guān)鍵是理解它們的共通目的:使所設(shè)計(jì)的軟件系統(tǒng)在一般或特定(系統(tǒng)將來(lái)在特定點(diǎn)上擴(kuò)展的可能性大)場(chǎng)景下,盡可能的對(duì)擴(kuò)展開(kāi)放,對(duì)修改關(guān)閉。即面對(duì)新需求或需求變更時(shí),容易開(kāi)發(fā)獨(dú)立于既有代碼的新代碼接入到現(xiàn)有系統(tǒng)或?qū)ΜF(xiàn)有代碼做可控的少量修改,而不是在現(xiàn)有代碼基礎(chǔ)上做大量的增、刪、改。為了這一目的, 23 種設(shè)計(jì)模式貫穿了面向?qū)ο缶幊痰幕驹瓌t:
面向接口或抽象編程,而不是面向?qū)崿F(xiàn)編程。
一個(gè)對(duì)象應(yīng)當(dāng)對(duì)其他對(duì)象有盡可能少的了解,即松耦合。
純粹的功能復(fù)用時(shí),盡量不要使用繼承,而是使用組合。使已有的對(duì)象成為新對(duì)象的一部分;新的對(duì)象通過(guò)向這些對(duì)象的委派達(dá)到復(fù)用已有功能的目的。
粵嵌動(dòng)態(tài)
推薦閱讀
- ·Linux字符設(shè)備驅(qū)動(dòng)框架解析:file_operations的核心作用與實(shí)現(xiàn)
- ·廣東朝歌數(shù)碼科技股份有限公司專場(chǎng)招聘會(huì)
- ·深化產(chǎn)教融合,共筑技能人才培養(yǎng)新生態(tài) —— 廣州華立學(xué)院到訪粵嵌從化校區(qū)為深化產(chǎn)教
- ·校企合作新突破 | 粵嵌科技與三亞學(xué)院共探產(chǎn)教融合新路徑
- ·粵嵌科技入選國(guó)家級(jí)職業(yè)數(shù)字展館聯(lián)合建設(shè)單位,賦能計(jì)算機(jī)程序設(shè)計(jì)員高技能人才培養(yǎng)
- ·嵌入式實(shí)時(shí)操作系統(tǒng)的性能優(yōu)化與實(shí)現(xiàn)路徑
- ·校企攜手賦能教育!粵嵌科技助力海南科技職業(yè)大學(xué)探索 AGI 時(shí)代教學(xué)新范式
- ·嵌入式系統(tǒng)中的低功耗設(shè)計(jì)策略與實(shí)現(xiàn)路徑
- ·深圳市軒宇軟件開(kāi)發(fā)有限公司專場(chǎng)招聘會(huì)
- ·嵌入式系統(tǒng)中的代碼空間優(yōu)化:策略與實(shí)踐