面向?qū)ο笤O(shè)計(jì)(OOD)原則
Posted on 2007-04-30 15:27 dayue 閱讀(418) 評(píng)論(0) 編輯 收藏 所屬分類: 面向?qū)ο笈c設(shè)計(jì)模式- 單一職責(zé)原則(SRP):一個(gè)類應(yīng)當(dāng)只有一個(gè)改變的原因,類只需要知道一件事情,它們應(yīng)當(dāng)有一個(gè)單獨(dú)的職責(zé),要點(diǎn)就是當(dāng)一個(gè)類需要改變時(shí),應(yīng)當(dāng)只有一個(gè)原因。
- 開放-封閉原則(OCP):軟件實(shí)體(類、模塊、函數(shù)等)應(yīng)當(dāng)為擴(kuò)展而開放,又為修改而封閉。這個(gè)原則有一個(gè)相當(dāng)詳細(xì)的定義,但是一個(gè)簡(jiǎn)單的意思是:你應(yīng)當(dāng)能夠改變一個(gè)模塊的周邊環(huán)境而無(wú)須改變模塊本身。
- Liskov替換原則(LSP):子類型(subtypes)必須是為它們的基類型(base types)可替代的。
- 依存關(guān)系倒置原則(DIP) :A.高層模塊應(yīng)當(dāng)不依賴低層模塊,它們應(yīng)當(dāng)依賴于抽象。
B.抽象應(yīng)當(dāng)不依賴于細(xì)節(jié),細(xì)節(jié)應(yīng)當(dāng)依賴于抽象。
更好的描述是:不要依賴那些容易變化的具體類。如果你要繼承一個(gè)類,從一個(gè)抽象類繼承吧。如果你要持有一個(gè)類的引用,從一個(gè)抽象的類引用吧。如果你要調(diào)用一個(gè)函數(shù),從一個(gè)抽象的函數(shù)調(diào)用吧。 - 接口隔離原則(ISP):客戶不應(yīng)當(dāng)依賴那些它們根本不用的方法。
總結(jié):
五個(gè)簡(jiǎn)單的原則是:
1、SRP--一個(gè)類應(yīng)當(dāng)只有一個(gè)發(fā)生變化的原因。
2、OCP――應(yīng)當(dāng)能夠改變一個(gè)類的環(huán)境,而無(wú)須改變類本身。
3、LSP――避免造成派生類的方法非法或退化,一個(gè)基類的用戶應(yīng)當(dāng)不需要知道這個(gè)派生類。
4、DIP ――用依賴于接口和抽象類來(lái)替代依賴容易變化的具體類。
5、ISP――給一個(gè)對(duì)象的每一個(gè)用戶一個(gè)接口,這個(gè)接口僅有用戶需要的方法。