歡迎關注微信公衆號:FSA全棧行動 👋java
1、設計原則
- 設計模式是站在設計原則的基礎之上的,因此在學習設計模式以前,有必要了解一下設計原則
- 軟件設計開發原則
- 爲了讓代碼有更好的重用性,可讀性,可靠性,可維護性
- 有六大原則,英文首字母拼在一塊兒就是 SOLID(穩定的),因此也稱之爲 SOLID 原則
一、單一職責原則(Single Responsibility Principle)
- 一個類只負責一個功能領域中的相應職責,就一個類而言,應該只有一個引發它變化的緣由
- 是實現 高內聚、低耦合 的指導方針
解釋:spring
- 高內聚:
- 儘量類中的每一個成員方法只完成一件事(最大限度的聚合)
- 模塊內部的代碼,相互之間的聯繫越強,內聚就越高,模塊的獨立性就越好
- 低耦合:減小類內部一個成員方法調用另外一個成員方法,避免牽一髮動全身
二、開閉原則(Open Closed Principle)
- 對擴展開放,對修改關閉,在程序須要進行拓展的時候,不能去修改原有的代碼,實現一個熱插拔的效果
三、里氏替換原則 LSP (Liskov Substitution Principle)
- 任何基類能夠出現的地方,子類必定能夠出現
- 在程序中儘可能使用基類類型來對對象進行定義,而在運行時再肯定其子類類型,用子類對象來替換父類對象
例如:javaEE 開發中,controller->service->dao,這三層之間的引用都是使用的接口或基類,實際對象類型由 spring 注入決定。編程
四、迪米特法則(Law of Demeter)
- 最少知道原則,一個實體應當儘可能少地與其餘實體之間發生相互做用,使得系統功能模塊相對獨立
- 類之間的耦合度越低,就越有利於複用,一個處在鬆耦合中的類一旦被修改,不會對關聯的類形成太大涉及
- 經過引入一個合理的第三者來下降現有對象之間的耦合度
五、接口隔離原則(Interface Segregation Principle)
- 客戶端不該該依賴那些它不須要的接口
- 使用多個隔離的接口,比使用單個接口要好,下降類之間的耦合度
六、依賴倒轉原則(Dependence Inversion Principle)
- 是開閉原則的基礎,針對接口編程,依賴於抽象而不依賴於具體
- 高層模塊不該該依賴底層模塊,兩者都應該依賴其抽象
2、什麼是設計模式
設計模式是軟件開發過程當中面臨的通常問題的解決方案,這些解決方案是衆多軟件開發人員通過至關長時間的試驗和錯誤總結出來的,能夠提升代碼重用性,讓代碼更容易被他人理解,保證代碼可靠性。設計模式
一、什麼是 GOF(Gang of Four)
在 1994 年,由四位做者全稱 GOF(全拼 Gang of Four)四人合著出版了一本名爲 Design Patterns - Elements of Reusable Object-Oriented Software,他們所提出的設計模式主要是基於如下面向對象設計原則:微信
- 對接口編程而不是對實現編程
- 優先使用對象組合而不是繼承
二、常見的三大設計模式分類
- 建立型模式:提供了一種在建立對象的同時隱藏建立邏輯的方式,使得程序在判斷針對某個給定實例須要建立哪些對象時更加靈活
- 經常使用:工廠模式、抽象工廠模式、單例模式、建造者模式
- 不經常使用:原型模式
- 結構型模式:關注類和對象的組合。繼承的概念被用來組合接口和定義組合對象得到新功能的定義
- 經常使用:適配器模式、橋接模式、裝飾器模式、代理模式
- 不經常使用:組合模式、外觀模式、享元模式
- 行爲型模式:特別關注對象之間的通訊
- 經常使用:責任鏈模式、迭代器模式、觀察者模式、狀態模式、策略模式、模板模式
- 不經常使用:備忘錄模式、命令模式
- 幾乎不用:訪問者模式、中介者模式、解釋器模式
若是文章對您有所幫助, 請不吝點擊關注一下個人微信公衆號:FSA全棧行動, 這將是對我最大的激勵. 公衆號不只有Android技術, 還有iOS, Python等文章, 可能有你想要了解的技能知識點哦~markdown