GOF23種設計模式是哪些


設計模式實踐里面提供了許多經久不衰的解決方案和最佳方案。這里,GOF 設計模式主要分為三大類:創建模式、結構模式和行為模式。創建模式對於創建對象實例非常有用。結構模式通過處理類或對象的組合來作用於企業級應用的設計結構,從而降低了應用的復雜性,提高了應用的可重用性和性能。行為模式的意圖是一組對象之間的交互作用,以執行單個對象無法自己執行的任務。它描述了類或對象交互以及職責的分配。

那么,本文的核心話題是 Spring 如何通過使用大量設計模式和良好實踐來構建應用程序。

工廠方法模式

Spring 框架使用工廠模式來實現 Spring 容器的 BeanFactory 和 ApplicationContext 接口。Spring 容器基於工廠模式為 Spring 應用程序創建 bean,並管理着每一個 bean 的生命周期。BeanFactory 和 ApplicationContext 是工廠接口,並且在 Spring 中存在有很多實現類。getBean() 方法是相對應的 bean 的工廠方法。

抽象工廠模式

Spring 框架中,FactoryBean 接口是基於抽象工廠模式設計的。Spring 提供了很多這個接口的實現,比如 ProxyFactoryBean、JndiFactoryBean、LocalSessionFactoryBean、LocalContainerEntityManagerFactoryBean 等。FactoryBean 幫助 Spring 構建它自己無法輕松構建的對象。通常這是用來構造具有許多依賴關系的復雜對象。它也可以根據配置構造高易變的邏輯。例如,在 Spring 框架中,LocalSessionFactoryBean 是 FactoryBean 的一個實現,它用於獲取 Hibernate 配置的關聯的 bean 的引用。這是一個數據源的特定配置,它在得到 SessionFactory 的對象之前被使用。對此,在一致的情況下可以用 LocalSessionFactoryBean 獲取特定的數據源配置。讀者可以將 FactoryBean 的 getObject() 方法的返回結果注入到任何其他屬性中。

單例模式

Spring 框架提供了一個單例的 bean 來實現單例模式。它類似於單例模式,但它與 Java 中的單例模式不完全相同。

建造者模式

Spring 框架中有一些功能實現了建造者模式。以下是 Spring 框架中基於建造者模式的類:

EmbeddedDatabaseBuilder

AuthenticationManagerBuilder

UriComponentsBuilder

BeanDefinitionBuilder

MockMvcWebClientBuilder

適配器模式

Spring 框架使用適配器模式來實現很多功能。以下列出的一些在 Spring 框架中使用到適配器模式的類:

JpaVendorAdapter

HibernateJpaVendorAdapter

HandlerInterceptorAdapter

MessageListenerAdapter

SpringContextResourceAdapter

ClassPreProcessorAgentAdapter

RequestMappingHandlerAdapter

AnnotationMethodHandlerAdapter

WebMvcConfigurerAdapter

橋接模式

以下是 Spring 模塊中基於橋接模式的實現:

ViewRendererServlet: 它是一個 servlet 橋接 ,主要是對 Portlet MVC 的支持

橋接模式: Spring 日志處理使用到橋梁模式

裝飾器模式

Spring 框架使用裝飾器模式構建重要功能,如事務、緩存同步和與安全相關的任務。讓我們看看一些 Spring 實現此模式的功能:

織入通知到 Spring 應用程序中。它使用裝飾者模式的 CGLib 代理,其通過在運行時生成目標類的子類來工作。

BeanDefinitionDecorator: 它通過使用自定義屬性來增強 bean 的定義。

WebSocketHandlerDecorator: 它用來增強一個 WebSocketHandler 附加行為。

外觀模式

在企業級應用中,如果使用到 Spring 框架,那么外觀模式是常用於應用程序的業務服務層,它用於整合所有服務。讀者也可以在 DAO 的持久層上應用這種模式。

代理模式

Spring 框架使用 Spring AOP 模塊中的代理模式。在 Spring AOP 中,筆者可以創建對象的代理來實現橫切關注點。在 Spring 中,其他模塊也實現了代理模式,如 RMI、 Spring 的 HTTP 調用、Hessian 和 Burlap。

責任鏈模式

Spring Security 項目實現了責任鏈模式。Spring Security 允許通過使用安全過濾器鏈在應用程序中實現身份驗證和授權功能。這是一個高度可配置的框架。由於使用了責任鏈設計模式,我們可以在過濾器鏈上添加自定義過濾器以自定義功能。

命令模式

Spring MVC 實現了命令模式。在企業級應用中使用到 Spring 框架,讀者經常會看到通過使用命令對象來實現命令模式。

解釋器模式

Spring 框架中,解釋器模式在 Spring 表達式語言(SpEL)中使用。Spring 從 Spring 3.0 中增加了這個新功能,讀者可以在企業級應用程序中通過 Spring 框架使用它。

迭代器模式

Spring 框架還通過 CompositeIterator 類擴展迭代器模式。該模式主要用於 Java 語言的集合框架中,用於按順序迭代訪問元素。

觀察者模式

Spring 框架中,觀察者模式用於實現 ApplicationContext 的事件處理功能。Spring 為我們提供了 ApplicationEvent 類和 ApplicationListener 接口來啟用事件處理。Spring 應用程序中的任何 bean 實現 ApplicationListener 接口,都會接收到 ApplicationEvent 作為事件發布者推送的消息。在這里,事件發布者是主題(Subject) 和實現 ApplicationListener 的 bean 的觀察者(Observer)。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM