面向?qū)ο笃叽笤瓌t——肖文斌

面向?qū)ο笃叽笤瓌t——肖文斌

ID:33946688

大?。?9.01 KB

頁數(shù):15頁

時間:2019-03-02

面向?qū)ο笃叽笤瓌t——肖文斌_第1頁
面向?qū)ο笃叽笤瓌t——肖文斌_第2頁
面向?qū)ο笃叽笤瓌t——肖文斌_第3頁
面向?qū)ο笃叽笤瓌t——肖文斌_第4頁
面向?qū)ο笃叽笤瓌t——肖文斌_第5頁
資源描述:

《面向?qū)ο笃叽笤瓌t——肖文斌》由會員上傳分享,免費在線閱讀,更多相關(guān)內(nèi)容在工程資料-天天文庫。

1、1.單一職責原則(SRP)單一職責原則(SRP),就一個類而言,應該僅有一個引起它變化的原因。也就是說,不要把變化原因各不相同的職責放在一起,因為不同的變化會影響到不相干的職責。再通俗一點地說就是,不該你管的事情你不要管,管好自己的事情就可以了,多管閑事害了自己也害了別人。在軟件設(shè)計中,如果一個類承擔的職責過多,就等于吧這些職責耦合在一起,而一個職責的變化可能會削弱和抑制這個類完成其他職責的能力。這耦合會導致脆弱的設(shè)計,當變化發(fā)生時,設(shè)計會遭受到意想不到的破壞。軟件設(shè)計真正要做的許多內(nèi)容,就是發(fā)現(xiàn)職責并把那些職責相互分離。如果多于一個的動機去改變一個

2、類,那么這個類就具有多余一個的職責,就應該要考慮類的職責分離。2.開放-封閉原則(TheOpen-ClosedPrinciple簡稱OCP)開放-封閉原則,或叫開-閉原則,是說軟件實體(類、模塊、函數(shù)等)應該是可以擴展的,但是不可修改。不修改的意思就是是“你可以隨便增加新的類,但是不要修改原來的類”。從這個角度去理解就好多了,其實這里還是一個隔離變化的問題。這個原則的兩個特征:一個是對于擴展是開放的;另一個是對于更改是封閉的。我們在設(shè)計開發(fā)任何系統(tǒng)時,都不可能指望系統(tǒng)一開始就需求確定,就不再變化(要這樣就太幸福了,哈哈),這是不現(xiàn)實的也是不科學的想法

3、。既然需求是有一定變化的,那么如何在面對需求變化時,設(shè)計的程序可以相對容易的修改,不至于說,新需求一來,就要把整個程序推倒重來(這樣會讓程序員瘋了不可,哈哈,你不想瘋吧)。怎樣的設(shè)計才能面對需求的改變卻可以保持相對穩(wěn)定,從而使得系統(tǒng)可以在第一個版本以后不斷推出的新版本呢?開放-封閉原則就是我們的答案。在程序設(shè)計時,我們要時刻考慮盡量把類設(shè)計的足夠好,寫好了就不要去修改,如果有新的需求來了,我們增加一些類來完成新的需求,原來的代碼能不動就不動。絕對的對修改關(guān)閉是不可能的,無論模塊是多么的封閉,都會存在一些無法對之封閉的變化,既然不能完全封閉,設(shè)計人員必

4、須對他設(shè)計的模塊應該對那種變化封閉做出抉擇、他必須事先猜測出最有可能發(fā)生變化的變化種類,然后構(gòu)建抽象來隔離那些變化。開放-封閉原則是面向?qū)ο笤O(shè)計的核心所在。遵循這個原則可以帶來面向?qū)ο蠹夹g(shù)所生成的巨大好處,也就是可維護、可擴展、可復用、靈活性好。開發(fā)人員應該僅對程序中呈現(xiàn)出頻繁變化的部分都做出抽象,然后,對于應用程序中的每部分都刻意定進行抽象同樣不是一個好主意,拒絕不成熟的抽象和抽象本身一樣重要。3.依賴倒轉(zhuǎn)原則(DIPDependencyInversionPrinciple)依賴倒轉(zhuǎn)原則:抽象不應該依賴于細節(jié)。細節(jié)應該依賴于抽象;高層不應該依賴于底

5、層,兩者都應該依賴于抽象。說白了就是要針對接口編程,不要針對實現(xiàn)編程。抽象的東西才是最穩(wěn)定的,也就是說,我們依賴的是它的穩(wěn)定。依賴倒轉(zhuǎn)其實可以說是面向?qū)ο笤O(shè)計的標志,用哪種語言來編寫程序不重要,如果編寫是考慮的都是如何針對抽象編程而不是針對細節(jié)編程,即程序中的所有的依賴關(guān)系都是終止與抽象類或者接口,那就是面向?qū)ο蟮脑O(shè)計,反之就是過程化設(shè)計了。4.里氏代換原則里氏代換原則(LSP):子類型必須能夠替換掉他的父類型。說白了就是一個軟件實體如果使用的是一個父類的話,那么一定適用于其子類,而他察覺不出父類對象和子類對象的區(qū)別,也就是說,在軟件里面,把父類都替

6、換成他的子類,程序行為沒有變化。有了里氏替換原則,才是繼承復用成為可能,只有當子類可以替換掉父類時,軟件的功能不受到影響,父類才能真正被復用,而子類也能夠在父類的基礎(chǔ)上增加新的行為。有了里氏代換原則,才能使開放-封閉原則成為可能,正是由于子類型的可替換性才使得父類型的模塊在無需修改的情況下擴展。5.接口隔離原則(ISP)接口隔離原則(ISP):不應該強迫客戶依賴于它們不用的方法。接口屬于客戶,不屬于它所在的類層次結(jié)構(gòu)。這個說得很明白了,再通俗點說,不要強迫客戶使用它們不用的方法,如果強迫用戶使用它們不使用的方法,那么這些客戶就會面臨由于這些不使用的方

7、法的改變所帶來的改變。6.迪米特法則(LoD)迪米特法則(LawofDemeter或簡寫LoD)又叫最少知識原則(LeastKnowledgePrinciple或簡寫為LKP):如果兩個類不彼此之間直接通信,那么這兩個類就不應當發(fā)生直接的相互作用。如果其中一個類需要調(diào)用另一個類的某個方法的話,可以通過第三者轉(zhuǎn)發(fā)這個調(diào)用。迪米特法則首先強調(diào)的前提是在類的結(jié)構(gòu)設(shè)計上,每一個類都應當盡量降低成員的訪問權(quán)限。迪米特法則其根本思想強調(diào)的是類之間的松耦合。類之間的耦合越弱,越利于復用,一個處于弱耦合的類被修改,不會對有關(guān)系的類造成波及。7.合成/聚合復用原則(C

8、omposite/AggregateReusePrinciple或CARP)合成/聚合復用原則(Compos

當前文檔最多預覽五頁,下載文檔查看全文

此文檔下載收益歸作者所有

當前文檔最多預覽五頁,下載文檔查看全文
溫馨提示:
1. 部分包含數(shù)學公式或PPT動畫的文件,查看預覽時可能會顯示錯亂或異常,文件下載后無此問題,請放心下載。
2. 本文檔由用戶上傳,版權(quán)歸屬用戶,天天文庫負責整理代發(fā)布。如果您對本文檔版權(quán)有爭議請及時聯(lián)系客服。
3. 下載前請仔細閱讀文檔內(nèi)容,確認文檔內(nèi)容符合您的需求后進行下載,若出現(xiàn)內(nèi)容與標題不符可向本站投訴處理。
4. 下載文檔時可能由于網(wǎng)絡波動等原因無法下載或下載錯誤,付費完成后未能成功下載的用戶請聯(lián)系客服處理。