《 javasprict 設計模式與開發實踐 》
[GoF設計模式](https://blog.csdn.net/weixin_42607437/article/details/114482907)
[趣學設計模式](https://kaiwu.lagou.com/course/courseInfo.htm?courseId=710#/detail/pc?id=6861)
>[info] ## 學習設計模式
1. 我們需要先搞清楚**設計模式能解決哪些范圍的問題**后,才能正確使用設計模式。**設計模式解決**的是**可復用**的設計問題,而類似可`靠性設計、性能設計、安全性設計、可服務性設計`等都**不是設計模式能夠解決的**
2. 設計模式從不同項目中總結出來的通用經驗,是為了幫助我們快速理解現有的系統,并從中找出共性規律,**如果沒有足夠的經驗或者思考,反而容易引入錯誤的設計,造成更多的麻煩**
3. **好的設計從來不是看用的模式有多少,而是看如何合理利用模式的設計思想,以及如何利用模式解決真實的問題**。
1-3 [趣學設計模式](https://kaiwu.lagou.com/course/courseInfo.htm?courseId=710#/detail/pc?id=6861)
>[info] ## 雜七雜八
1. **一個程序只做一件事,并做得很好**,**代碼之間的相互影響越多,軟件越復雜**。比如,A 依賴 B,B 依賴 C……一直這樣循環下去,程序就會變得非常復雜,也就是我們編程中常說的,如果一個類文件寫了上萬行代碼,那么代碼邏輯將會非常難理解。
2. 減少代碼復雜度,**通過減少硬編碼來控制代碼量**,對于技術復雜度來說,要想在整體上保持簡單性,需要**在設計時就做好技術選型**,降低實現復雜度而言,可以使用**統一的代碼規范**
3. 把軟件設計成獨立組件并能隨意地組合,才能真正應對更多變化的需求,不要做**定制功能驅動**開發比如,用戶需要一個“上傳文件的紅色按鈕”,你就實現了一個叫“紅色上傳按鈕功能”的組件,過幾天變為需要一個“上傳文件的綠色按鈕”時,你再修改代碼滿足要求……這不是組合設計,而是直接映射設計,看似用戶是需要“上傳”這個功能,但實際上用戶隱藏了對“不同顏色”的需求,解決思路
* **解耦**,代碼與代碼之間的依賴關系越多,程序就越復雜,只有將大程序拆分成小程序,才能讓人容易理解它們彼此之間的關系。也就是我們常說的在設計時應盡量分離接口與實現,程序間應該耦合在某個規范與標準上,而不是耦合在具體代碼實現邏輯上
* **模塊化,可替換的一致性**
總結**高內聚、低耦合原則:模塊內部盡量聚合以保持功能的一致性,模塊外部盡量通過標準去耦合**
1-3[趣學設計模式](https://kaiwu.lagou.com/course/courseInfo.htm?courseId=710#/detail/pc?id=6861)
>[danger] ##### 參考文檔中比較好的語句
* 代碼質量既是設計出來的,也是迭代優化出來的。換句話說,無論是前期的產品需求分析、架構設計,還是后期的詳細代碼設計與編碼,都離不開良好的設計。(趣學設計模式)