設計模式有六大原則,分別是:
-
單一職責原則(Single Responsibility Principle,SRP)
-
開閉原則(Open-Closed Principle,OCP)
-
里氏替換原則(Liskov Substitution Principle,LSP)
-
依賴倒置原則(Dependency Inversion Principle,DIP)
-
接口隔離原則(Interface Segregation Principle,ISP)
-
迪米特法則(Law of Demeter,LoD)
單一職責原則
單一職責原則(Single Responsibility Principle,SRP):就一個類而言,應該僅有一個引起它變化的原因。即一個類應該只負責一個功能領域中的相應職責。
單一職責原則是實現高內聚、低耦合的指導方針,它是最簡單但又最難運用的原則,需要設計人員發現類的不同職責並將其分離,而發現類的多重職責需要設計人員具有較強的分析設計能力和相關實踐經驗。
開閉原則
開閉原則(Open-Closed Principle,OCP): 是指軟件實體(類、模塊、函數等等)應該可以擴展,但是不可修改。即軟件實體應該儘量在不修改原有代碼的情況下進行擴展。
爲了滿足開閉原則,需要對系統進行抽象化設計,抽象化是開閉原則的關鍵。
里氏替換原則
里氏替換原則(Liskov Substitution Principle,LSP):所有引用父類的地方必須能夠透明的使用子類的對象。即子類型必須能夠替換掉它們的父類型。
里氏替換原則告訴我們,在軟件中將一個基類對象替換成它的子類對象,程序將不會產生任何錯誤和異常,反過來則不成立,如果一個軟件實體使用的是一個子類對象的話,那麼它不一定能夠使用基類對象。因此在程序中儘量使用基類類型來對對象進行定義,而在運行時再確定其子類類型,用子類對象來替換父類對象。同時,里氏代換原則是實現開閉原則的重要方式之一。
依賴倒置原則
依賴倒置原則(Dependency Inversion Principle,DIP):抽象不應該依賴細節,細節應該依賴於抽象。即應該針對接口編程,而不是針對實現編程。
在大多數情況下,我們會同時使用開閉原則、里氏代換原則和依賴倒轉原則,開閉原則是目標,里氏代換原則是基礎,依賴倒轉原則是手段。
接口隔離原則
接口隔離原則(Interface Segregation Principle,ISP):使用專門的接口,而不使用單一的總接口,即客戶端不應該依賴那些它不需要的接口。
根據接口隔離原則,當一個接口太大時,我們需要將它分割成一些更細小的接口,使用該接口的客戶端僅需知道與之相關的方法即可。每一個接口應該承擔一種相對獨立的角色,不幹不該乾的事,該乾的事都要幹。
迪米特法則
迪米特法則(Law of Demeter,LoD):一個軟件實體應當儘可能少地與其它實體發生相互作用。
迪米特法則又稱爲最少知識原則(LeastKnowledge Principle,LIP)。
如果一個系統符合迪米特法則,那麼當其中某一個模塊發生修改時,就會盡量少地影響其他模塊,擴展會相對容易,這是對軟件實體之間通信的限制,迪米特法則要求限制軟件實體之間通信的寬度和深度。迪米特法則可降低系統的耦合度,使類與類之間保持鬆散的耦合關係。
以上所述是小編給大家介紹的設計模式六大原則,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回覆大家的!
漫談JAVA中的各種鎖以及最優的zookeeper分佈式鎖解決方案(視頻)
點擊打開鏈接Java學習資料獲取(複製下段連接至瀏覽器即可)
data:text/html;charset=UTF-8;base64,5oGt5Zac5L2g77yM5p625p6E5biI5a2m5Lmg576k5Y+35pivNjg2NTc5MDE0Cg==