首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 綜合教學

大話設計模式系列導覽:23 種模式分類圖譜與學習路線圖

     編輯:Java 綜合教學

23 種設計模式全景分類

23種設計模式概覽圖

設計模式關係圖譜

創建型模式(5+1)

關注對象創建過程,封裝實例化邏輯,降低客戶代碼與具體類耦合。

模式核心意圖關鍵角色典型應用
簡單工廠靜態工廠方法集中創建邏輯Factory、ProductJDBC DriverManager、Calendar.getInstance()
工廠方法定義創建接口,子類決定實例化類Creator、ConcreteCreator、ProductCollection.iterator()、DocumentBuilderFactory
抽象工廠創建相關/依賴對象族,無需指定具體類AbstractFactory、ConcreteFactory、AbstractProduct跨平台 GUI 工具包、數據源適配器
建造者分步構建複雜對象,分離構建與表示Builder、Director、ProductStringBuilder、HttpClient.Builder、Lombok @Builder
原型通過複製原型創建新對象,避免昂貴構造Prototype、ConcretePrototype、ClientObject.clone()、Spring Bean 原型作用域
單例保證類全局唯一實例,提供全局訪問點SingletonRuntime.getRuntime()、Spring Bean 默認單例

結構型模式(7)

關注類/對象組合,形成更大結構,保持靈活性與擴展性。

模式核心意圖關鍵角色典型應用
適配器將接口轉換為客戶期望的另一接口Target、Adaptee、AdapterArrays.asList()、Spring MVC HandlerAdapter
橋接將抽象與實現解耦,使二者可獨立變化Abstraction、ImplementorJDBC Driver、集合橋接(List/LinkedList)
組合樹形結構統一單個對象與組合對象接口Component、Leaf、CompositeSwing 組件樹、文件系統、XML DOM
裝飾動態添加職責,替代繼承擴展功能Component、Decorator、ConcreteDecoratorJava IO 流、Spring TransactionInterceptor
外觀為子系統提供統一高層接口,降低耦合Facade、Subsystem ClassesJDBC DataSource、SLF4J LoggerFactory
享元共享細粒度對象,節省內存Flyweight、FlyweightFactoryString 常量池、Integer 緩存、線程池
代理為對象提供代理,控制訪問Subject、Proxy、RealSubjectSpring AOP、RPC Stub、虛代理圖片加載

行為型模式(11)

關注對象間職責分配與通信,刻畫運行時難以靜態刻畫的控制流。

模式核心意圖關鍵角色典型應用
模板方法定義算法骨架,延遲步驟到子類AbstractClass、ConcreteClassHttpServlet service()、AbstractList
策略定義算法族,封裝並可互換Strategy、Context、ConcreteStrategyCollections.sort(Comparator)、Spring ResourceLoader
觀察者一對多依賴,狀態變更自動通知Subject、Observer、ConcreteObserverEventListener、RxJava、Spring ApplicationEvent
迭代器順序訪問聚合元素,不暴露內部結構Iterator、Aggregate、ConcreteIteratorCollection.iterator()、ResultSet
責任鏈請求沿鏈路傳遞,多個處理器可處理Handler、ConcreteHandlerServlet Filter、Spring Interceptor、Log4j Appender
命令將請求封裝為對象,支持撤銷/排隊/日誌Command、Receiver、InvokerRunnable、菜單項、事務操作封裝
備忘錄捕獲對象內部狀態,支持恢復Originator、Memento、Caretaker編輯器撤銷、序列化、棋類遊戲悔棋
狀態對象內部狀態改變行為,類似換類State、Context、ConcreteState線程狀態、訂單流程、TCP 連接狀態機
訪問者分離操作與數據結構,新增操作不改結構Visitor、Element、ObjectStructureJavac AST 遍歷、編譯器各階段分析器
中介者封裝對象交互,降低多對多耦合Mediator、ColleagueMVC Controller、消息總線、機場塔台
解釋器定義語言文法並構建解釋器Expression、Terminal/Nonterminal正則表達式引擎、SQL 解析器、SpEL

學習路線建議

  1. 基石階段:掌握 6 大設計原則(SOLID+LoD)、UML 類圖/序列圖閱讀
  2. 必修核心:單例、工廠方法、策略、模板方法、觀察者、裝飾、代理、適配器(高頻 8 種)
  3. 進階拓展:建造者、原型、抽象工廠、組合、外觀、享元、橋接
  4. 專題深入:責任鏈(過濾器鏈)、命令(事務/撤銷)、狀態(狀態機)、訪問者(編譯器/AST)、中介者(解耦)、解釋器(DSL)、備忘錄(快照)
  5. 實戰融合:閱讀 Spring/MyBatis/Netty/Guava 源碼識別模式組合;重構自身項目引入模式消除代碼異味

模式選型決策樹(簡化版)

  • 需要控制創建 → 創建型(單例/工廠/建造者/原型)
  • 需要組合結構/接口轉換 → 結構型(適配器/裝飾/代理/外觀/組合)
  • 需要行為協作/算法封裝 → 行為型(策略/模板/觀察者/責任鏈/命令/狀態/訪問者)

記住:模式是手段非目的,解決具體設計問題(擴展性、復用性、解耦)才是核心。過度使用模式會導致「模式癮」,增加不必要的複雜度。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved