原创 設計模式之策略模式(Strategy Pattern)

策略模式是軟件開發中較爲常用的一種模式。簡單的解釋就是,對一組算法封裝在同一個接口下,從而在使用的時候,不影響客戶端的情況下,可以替換,實現不同功能。 實例: Java中的TreeSet public TreeSet(Comp

原创 設計模式之單例模式

單例模式 一個類負責創建自己的對象,同時確保只有單個對象被創建。這個類提供了一種訪問其唯一的對象的方式,可以直接訪問,不需要實例化該類的對象。 這裏只寫3種單例模式 1.雙檢鎖/雙重校驗鎖(DCL,即 double-checked l

原创 設計模式之MVC 模式

MVC 模式代表 Model-View-Controller(模型-視圖-控制器) 模式。這種模式用於應用程序的分層開發。 Model(模型) - 模型代表一個存取數據的對象或 JAVA POJO。它也可以帶有邏輯,在數據變化時更新控

原创 設計模式之訪問者模式(Visitor Pattern)

在訪問者模式(Visitor Pattern)中,我們使用了一個訪問者類,它改變了元素類的執行算法。通過這種方式,元素的執行算法可以隨着訪問者改變而改變。這種類型的設計模式屬於行爲型模式。根據模式,元素對象已接受訪問者對象,這樣訪問者

原创 設計模式之空對象模式(Null Object Pattern)

在空對象模式(Null Object Pattern)中,一個空對象取代 NULL 對象實例的檢查。Null 對象不是檢查空值,而是反應一個不做任何動作的關係。這樣的 Null 對象也可以在數據不可用的時候提供默認的行爲。 在空對象模

原创 設計模式之外觀模式(Facade Pattern)

外觀模式(Facade Pattern)隱藏系統的複雜性,並向客戶端提供了一個客戶端可以訪問系統的接口。這種類型的設計模式屬於結構型模式,它向現有的系統添加一個接口,來隱藏系統的複雜性。 這種模式涉及到一個單一的類,該類提供了客戶端請

原创 設計模式之責任鏈模式(Chain of Responsibility Pattern)

顧名思義,責任鏈模式(Chain of Responsibility Pattern)爲請求創建了一個接收者對象的鏈。這種模式給予請求的類型,對請求的發送者和接收者進行解耦。這種類型的設計模式屬於行爲型模式。 在這種模式中,通常每個接

原创 設計模式之迭代器模式(Iterator Pattern)

迭代器模式(Iterator Pattern)是 Java 和 .Net 編程環境中非常常用的設計模式。這種模式用於順序訪問集合對象的元素,不需要知道集合對象的底層表示。 迭代器模式屬於行爲型模式。 意圖:提供一種方法順序訪問一個聚合

原创 設計模式之組合實體模式(Composite Entity Pattern)

組合實體模式(Composite Entity Pattern)用在 EJB 持久化機制中。一個組合實體是一個 EJB 實體 bean,代表了對象的圖解。當更新一個組合實體時,內部依賴對象 beans 會自動更新,因爲它們是由 EJB

原创 Java重寫equals方法的錯誤——違反對稱性

Java對重寫equals方法有一些約定,其中一條就是要求對稱性,即ab返回true,ba也要返回true。下面的例子就是重寫所範的錯誤。 代碼: public final class CaseInsensitiveString {

原创 設計模式之解釋器模式(Interpreter Pattern)

解釋器模式(Interpreter Pattern)提供了評估語言的語法或表達式的方式,它屬於行爲型模式。這種模式實現了一個表達式接口,該接口解釋一個特定的上下文。這種模式被用在 SQL 解析、符號處理引擎等。 意圖:給定一個語言,定

原创 設計模式之傳輸對象模式(Transfer Object Pattern)

傳輸對象模式(Transfer Object Pattern)用於從客戶端向服務器一次性傳遞帶有多個屬性的數據。傳輸對象也被稱爲數值對象。傳輸對象是一個具有 getter/setter 方法的簡單的 POJO 類,它是可序列化的,所以

原创 設計模式之攔截過濾器模式(Intercepting Filter Pattern)

攔截過濾器模式(Intercepting Filter Pattern)用於對應用程序的請求或響應做一些預處理/後處理。定義過濾器,並在把請求傳給實際目標應用程序之前應用在請求上。過濾器可以做認證/授權/記錄日誌,或者跟蹤請求,然後把

原创 設計模式之數據訪問對象模式(Data Access Object Pattern)

數據訪問對象模式(Data Access Object Pattern)或 DAO 模式用於把低級的數據訪問 API 或操作從高級的業務服務中分離出來。以下是數據訪問對象模式的參與者 數據訪問對象接口(Data Access Obje

原创 設計模式之服務定位器模式(Service Locator Pattern)

服務定位器模式(Service Locator Pattern)用在我們想使用 JNDI 查詢定位各種服務的時候。考慮到爲某個服務查找 JNDI 的代價很高,服務定位器模式充分利用了緩存技術。在首次請求某個服務時,服務定位器在 JND