【文章內(nèi)容簡介】
想是 務(wù)實(shí) ,很好地揭示了極限編程 (Extreme Programming)中 簡單設(shè)計 各 重構(gòu) 的理論基礎(chǔ)。本原則可以幫助我們抵御 面向?qū)ο笤O(shè)計五大原則 以及設(shè)計模式的誘惑,以免陷入過度設(shè)計 (Overengineering)的尷尬境地,帶來不必要的復(fù)雜性。 湖南工程學(xué)院計算機(jī)與通信學(xué)院 授課:李遠(yuǎn)輝 Java 編程技術(shù)教程 OO設(shè)計原則 什么是設(shè)計原則? 設(shè)計原則是基本的工具,應(yīng)用這些規(guī)則可以使你的代碼更加靈活、更容易維護(hù),更容易擴(kuò)展。 基本原則 : 封裝變化 Encapsulate what varies. 面向接口編程而非實(shí)現(xiàn) Code to an interface rather than to an implementation. 優(yōu)先使用組合而非繼承 Favor Composition Over Inheritance 湖南工程學(xué)院計算機(jī)與通信學(xué)院 授課:李遠(yuǎn)輝 Java 編程技術(shù)教程 SRP: The single responsibility principle 單一職責(zé) 系統(tǒng)中的每一個對象都應(yīng)該只有一個單獨(dú)的職責(zé),而所有對象所關(guān)注的就是自身職責(zé)的完成。 Every object in your system should have a single responsibility ,and all the object s services should be focused on carrying out that single responsibility . 每一個職責(zé)都是一個設(shè)計的變因,需求變化的時候,需求變化反映為類職責(zé)的變化。當(dāng)你系統(tǒng)里面的對象都只有一個變化的原因的時候,你就已經(jīng)很好的遵循了 SRP原則。 湖南工程學(xué)院計算機(jī)與通信學(xué)院 授課:李遠(yuǎn)輝 Java 編程技術(shù)教程 SRP: The single responsibility principle 單一職責(zé) 如果一個類承擔(dān)的職責(zé)過多,就等于把這些職責(zé)耦合在了一起。一個職責(zé)的變化就可能削弱或者抑制這個類其它職責(zé)的能力。這種設(shè)計會導(dǎo)致脆弱的設(shè)計。當(dāng)變化發(fā)生的時候,設(shè)計會遭到意想不到的破壞。 SRP 讓這個系統(tǒng)更容易管理維護(hù),因為不是所有的問題都攪在一起。 內(nèi)聚 Cohesion 其實(shí)是 SRP原則的另外一個名字 .你寫了高內(nèi)聚的軟件其實(shí)就是說你很好的應(yīng)用了 SRP原則。 怎么判斷一個職責(zé)是不是一個對象的呢?你試著讓這個對象自己來完成這個職責(zé),比如:“書自己閱讀內(nèi)容”,閱讀的職責(zé)顯然不是書自己的。 僅當(dāng)變化發(fā)生時,變化的軸線才具有實(shí)際的意義,如果沒有征兆,那么應(yīng)用SRP或者任何其它的原則都是不明智的。 湖南工程學(xué)院計算機(jī)與通信學(xué)院 授課:李遠(yuǎn)輝 Java 編程技術(shù)教程 DRY : Don39。t repeat yourself Principle 通過抽取公共部分放置在一個地方避免代碼重復(fù) . Avoid duplicate code by abstracting out things that are mon and placing tho