学习设计模式 - 六大基本原则之接口隔离原则
設(shè)計模式總共有六大基本原則,統(tǒng)稱為SOLID (穩(wěn)定)原則,分別是S-單一職責(zé)原則(Single Responsibility Principle), O-開閉原則(Open closed Principle),L-里氏替換原則(Liskov Substitution Principle),L-迪米特法則(Law of Demeter),I-接口隔離原則(Interface Segregation Principle),D-依賴倒置原則(Dependence Invension Principle)。
?
?
I-接口隔離原則(Interface Segregation Principle)
?
?一、定義 ? ? 1.? 客戶端不應(yīng)依賴它不需要的接口。(Clients should not be forced to depend upon interfaces that they don't? use) ? 2.? 類間的依賴關(guān)系應(yīng)該建立在最小的接口上。(The dependency of one class to another one should depend on the smallest possible interface.)?
二、理解
1. 什么是接口?
1)實例接口 (object interface)
Person zhangsan=new Person("zhangsan")。? Person就是zhangsan實例的接口。
2)類接口(class interface)
在java中,直接由關(guān)鍵字interface定義的類,稱為接口。
?
2.什么是隔離?
? 1) 客戶端不應(yīng)該依賴它不需要的的接口。(Clients should not be forced to depend upon interfaces that they don't use. )
2) 類間的關(guān)系應(yīng)該建立在最小的接口上。 (The dependency of one class to anthor one should depend on the smallest possible interface.)
?
簡而言之, 不要寫籠統(tǒng)的接口,接口要盡量細化,方法要盡量少。這樣的優(yōu)勢在于,能夠減少變更影響的范圍,隔離變化。
單一職責(zé)原則和接口隔離原則的審視角度不同。單一職責(zé)原則從職責(zé)的角度考慮, 從業(yè)務(wù)邏輯的角度劃分, 要求某個類的職責(zé)要單一。該類可以為多個模塊提供方法訪問。而接口隔離原則是從使用的角度考慮的,需要為多個模塊提供多個專門的接口,對應(yīng)的接口方法應(yīng)單一,專門為某個模塊提供訪問,某個模塊不需要的方法,不需要寫上去。
?
三、優(yōu)缺點
? 1. 優(yōu)點:接口越細,越靈活,能夠在客戶提出“無理”要求時,更好的應(yīng)付變化,有更好的可維護性
2. 缺點:如果接口太細,會造成類接口”膨脹“, 增加系統(tǒng)的復(fù)雜性
?
四、注意事項
? 1. 接口要盡量小,不要寫臃腫的接口,小的前提是單一職責(zé)原則。
2. 接口要“高內(nèi)聚”, 接口是對外的承諾,越少越好,對外的承諾越少,變更的風(fēng)險越少
3. 定制服務(wù)。定制服務(wù)就是為每個個體提供優(yōu)良的服務(wù),在做系統(tǒng)設(shè)計時需要考慮對系統(tǒng)之間或模塊之間的“相互訪問”接口采用定制服務(wù)。
4. 接口設(shè)計是有限度的,
5. 一個接口只服務(wù)于一個子模塊或業(yè)務(wù)邏輯。
6. 通過業(yè)務(wù)邏輯壓縮接口中的public方法
7. 已經(jīng)被污染的接口,盡量去修改,弱變更的風(fēng)險較大,則采用適配器模式進行轉(zhuǎn)化
8. 好的接口設(shè)計,需要深入了解業(yè)務(wù)邏輯,不可盲從。
?
?
學(xué)習(xí)資料:
《設(shè)計模式之禪》秦小波 著
?
轉(zhuǎn)載于:https://www.cnblogs.com/timfruit/p/9746073.html
總結(jié)
以上是生活随笔為你收集整理的学习设计模式 - 六大基本原则之接口隔离原则的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: SQL和PL/SQL的性能优化之四---
- 下一篇: 树莓派上 安装并 运行opencv