接口隔离原则_设计模式之七大设计原则(上)
這是雷總20多年前寫的匯編程序,像詩一樣優(yōu)雅
而中國詩詞講究平仄、押韻、對仗等一系列的規(guī)則原則,
那么想要寫出像詩一樣優(yōu)雅的程序你不得不知的?--?設計模式之七大原則:
1.開閉原則:對修改關閉,對擴展開放。
2.單一職責原則:每個類、方法只負責一個職責或功能。
3.接口隔離原則:接口設計要精簡單一。
4.里氏替換原則:子類可以擴展父類的功能,盡量不修改父類原有的功能。
5.依賴倒置原則:高層不依賴底層,兩者都該依賴接口。(面向接口編程)
6.迪米特法則:也稱最少知道原則;只和你的朋友說話,不與陌生人說話。
7.合成復用原則:盡量先使用組合或聚合實現(xiàn)關聯(lián)關系,其次在考慮使用繼承關系
開閉原則
一天小A開發(fā)了某項功能經(jīng)過測試并上線。但有一天這項功能需要進行升級,此時小A 已離職,接管小A 的小B 不是在小A的源碼上進行擴展,而是直接拿源碼進行修改,造成了測試需要重新測試原來已上線的功能。這樣不僅使生產(chǎn)效率降低,而且還降低了系統(tǒng)穩(wěn)定性;當軟件需要變化時,盡量通過擴展軟件來實現(xiàn)變化,而不是通過修改已有的代碼來實現(xiàn)變化。(祖?zhèn)鞔a不能動)單一職責原則
5人組裝一臺電腦主機步驟一:將主板安裝到機箱上。步驟二:將CPU安裝到主板并加上CPU風扇。步驟三:將內存條、顯卡、硬盤安裝到主板上。步驟四:將電源安裝到機箱上并接入CPU、主板、顯卡。步驟五:電源線整理并封箱。前置條件:5人不會組裝電腦。崗前培訓:此時領導培訓該五位新人,講解如何完整的組裝一臺電腦,但5位新人并沒有完全吸收領導所講解的。實操:5人單人作業(yè) pk 5人流水作業(yè)
5人單人作業(yè):每人負責完整的組裝步驟,由于缺少實操,在每個步驟上都卡殼,領導也只能給每一位新人逐步解答。5人流水作業(yè):每人只負責一個步驟,即使5人不會完整的組裝電腦,但相對單人作業(yè)模式會減少許多問題。
把每人人比作類來看,即可得出?每個類、方法只負責一個職責或功能從而降低類或方法的復雜度。從而提高程序的可讀取性。接口隔離原則
某筆記本電腦需要兩個type-c插槽,一個既能充電又能傳輸數(shù)據(jù),另一個僅數(shù)據(jù)傳輸;
此時定義一個type-c接口:
interface TypeC { ? ?//數(shù)據(jù)傳輸 ? ?public function data(); ? ?//充電 ? ?public function charge();}具有實現(xiàn)類:
//typc1class?TypeC1?implements?TypeC{????public?function?data(){ ? ? ? echo "實現(xiàn)數(shù)據(jù)傳輸"; ? ?}????public?function?charge(){ ? ? ? ?echo "實現(xiàn)充電"; ? ?}}//typc2class?TypeC2?implements?TypeC{????public?function?data(){ ? ? ? echo "實現(xiàn)數(shù)據(jù)傳輸"; ? ?}????public?function?charge(){ ? ? ? throw new \Exception("我可能會爆炸"); ? ?}}此時TypeC2并不需要實現(xiàn)充電接口。
將其修改之:
interface?Charge{ ? ?//充電 ? ?public function charge();}interface TypeC { ? ?//數(shù)據(jù)傳輸 ? ?public function data();}具體實現(xiàn)類:
class?TypeC1?implements?TypeC,Charge{????public?function?data(){ ? ? ? ?echo "實現(xiàn)數(shù)據(jù)傳輸";????}????public?function?charge(){ ? ? ? ?echo "實現(xiàn)充電"; ? ?}}class?TypeC2?implements?TypeC{????public?function?data(){ ? ? ? ?echo "實現(xiàn)數(shù)據(jù)傳輸"; ? ?}}充電接口單獨提取出來,需要實現(xiàn)充電接口的Type-c去實現(xiàn).其客戶端不應該依賴它不需要的接口,這就是接口隔離原則。
總結
以上是生活随笔為你收集整理的接口隔离原则_设计模式之七大设计原则(上)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: springboot启动没反应_新特性:
- 下一篇: asp.net ajax控件工具集 Au