1.JAVA設計模式
1.1 什么是設計模式
設計模式是軟件開發過程中前輩們在長期實踐中針對重復出現的問題總結出來的最佳解決方案。這些模式不是具體的代碼實現,而是經過驗證的、可重用的設計思想,能夠幫助開發者更高效地解決特定類型的問題。
設計模式的重要性體現在:
提供了標準化的解決方案模板
促進了代碼重用和設計一致性
提高了系統的可維護性和擴展性
便于開發者之間的溝通和理解
1.2 為什么要學習設計模式
學習設計模式對開發者有多方面的好處:
提高編程思維能力:培養面向對象的設計思維,學會從更高層次思考問題
標準化設計:遵循業界認可的最佳實踐,使設計更加規范化
增強代碼質量:
提高代碼復用性,減少重復代碼
增強系統可擴展性,便于未來功能添加
提高靈活性,使系統更容易適應變化
提升源碼閱讀能力:許多優秀框架和庫都使用了設計模式,理解模式有助于快速掌握其設計思想
開閉原則支持:在大型項目中添加新功能時,可以最小化對現有代碼的影響
2.UML建模語言基礎
統一建模語言(UML)是軟件設計中用于分析和設計類與類(接口)之間關系的標準化建模語言。它通過靜態圖形(類圖)來表達系統結構。
2.1 UML類圖基本要素
類(Class)表示:
接口(Interface)表示:
完整類圖示例:
2.2 類之間的關系詳解
1. 繼承關系(Inheritance)
表示"is-a"關系,即子類是父類的一種特殊化:
類繼承類
接口繼承接口
示例:
這里Student和Teacher可能繼承自一個共同的Person類,共享name等屬性
2. 實現關系(Realization)
表示類實現接口的功能:
Car和Ship類都實現了Vehicle接口的move()方法,但各自實現方式不同
3. 依賴關系(Dependency)
"use-a"關系,在一個類的方法中使用另一個類,具有臨時性:
Person類在call方法中臨時使用了MobilePhone對象,方法結束后關系解除
4. 關聯關系(Association)
"has-a"關系,一個類作為另一個類的成員變量。根據強弱可分為:
聚合關系(Aggregation)
弱關聯,整體和部分可以獨立存在:
即使University不存在了,Teacher仍然可以存在
組合關系(Composition)
強關聯,生命周期一致,整體控制部分的生命周期:
Head和Mouth是強關聯,Head不存在時Mouth也不存在
3.學習筆記?
4.拓展?
4.1 設計模式分類
設計模式通常分為三大類:
創建型模式
單例模式(Singleton)
工廠方法模式(Factory Method)
抽象工廠模式(Abstract Factory)
建造者模式(Builder)
原型模式(Prototype)
結構型模式
適配器模式(Adapter)
裝飾器模式(Decorator)
代理模式(Proxy)
外觀模式(Facade)
橋接模式(Bridge)
組合模式(Composite)
享元模式(Flyweight)
行為型模式
策略模式(Strategy)
模板方法模式(Template Method)
觀察者模式(Observer)
迭代器模式(Iterator)
責任鏈模式(Chain of Responsibility)
命令模式(Command)
備忘錄模式(Memento)
狀態模式(State)
訪問者模式(Visitor)
中介者模式(Mediator)
解釋器模式(Interpreter)
4.2 設計模式應用原則
開閉原則(OCP):對擴展開放,對修改關閉
單一職責原則(SRP):一個類只負責一個功能領域
里氏替換原則(LSP):子類必須能夠替換父類
依賴倒置原則(DIP):依賴抽象而非具體實現
接口隔離原則(ISP):使用多個專用接口而非單一總接口
迪米特法則(LoD):最少知識原則,減少類間耦合
組合/聚合復用原則(CARP):優先使用組合而非繼承
4.3 實際應用建議
不要過度設計:只在必要時應用設計模式
理解優于記憶:掌握模式背后的思想比記住結構更重要
靈活應用:根據實際情況調整模式實現
重構到模式:可以先實現功能,再通過重構引入模式
模式組合:復雜問題可能需要多個模式組合解決
設計模式是優秀開發者的重要工具,但并非銀彈。合理運用可以顯著提高代碼質量,而濫用則可能導致過度設計。理解每種模式的適用場景和優缺點,才能在適當的時候做出最佳選擇。