基本模式:
1. 介面模式:當多個類別提供近似的服務的時候,透過介面模式,不同的服務提供者類別所提供的共同的服務就可以被抽像出來,並被聲明為一個獨立的介面。這樣客戶物件就能以一種無縫的方式來使用不同的服務提供類,而無需進行任何改動。
2. 抽象類別模式:可以用來設計一個能夠為一組相關類別的公共功能提供一致的實作的框架。與介面不同的是,介面中的方法都必須在子類別中實作。而抽象類別中就可以實作必須的方法,子類別只需繼承,這樣就減少了冗餘的方法實作。
3. 私有方法模式:有些方法只能被別的方法或同一個物件中的內部類別在內部使用,該模式建議將這種方法設計為私有方法。
4. 存取器模式:物件中,所有的實例變數都被宣告為私有的,並提供公有的存取器方法來存取物件的公有狀態;客戶可以透過使用存取器將一個物件從一個狀態改為另一個狀態;物件可以直接存取它的私有變數。 JSP中的javaBean就是用了這種模式。
5. 常量資料管理器:非常適合設計一個有效的儲存機制,以便對應用程式中的不同物件都會使用到的常數資料進行管理。該模式建議,對於應用中取值恆久不變的那些數據,應該將它們存放在一個單獨的對像中供應用中的其他對象訪問,而不應該允許他們出現在不同的對像中。這種類型的分離能夠為應用程式中的常數資料提供一個易於維護的集中式倉庫。
6. 不變物件:把所有的實例變數都在建構方法中設定,不提供任何其他可以改變物件狀態的方法;將類別宣告為fanal型,防止存在透過重寫類別方法來改變狀態的可能性;所有實例變數都被寫成fanal型,這樣它就只能透過建構方法被賦值;如果實例變數中的任何一個包含指向一個物件的引用,那麼對應的get方法inggai會傳回該物件的一個拷貝,而不是真是的對象本身。以上的機制可以確保線程安全,並自動消除了與並發存取有關的所有問題。
7. 管程:它透過在一個這樣的物件上取得一個鎖以保證在任意一個時刻只有一個執行緒被允許執行該物件的任何方法。在Java中可以透過在物件方法的聲明中使用synchronized關鍵字來做到這一點。
創建模式:
作用:處理OO應用中最常執行的任務之一--創建對象;支援使用一致,簡單的受約束機制創建對象;允許封裝有關實例哪些類以及如何創建實例等詳細信息;支援使用接口,以減少耦合的產生。
1. 工廠方法:如果客戶機物件不知道要實例哪個類,它可以利用工廠方法,為類別層次結構或相關類別群組中的對應類別建立實例。工廠方法可能是作為客戶機本身的一部分設計的,也可能是在個別類別中設計的。其中,包含工廠方法或任意其子類別的類別決定了要選擇的類別以及如何實例該類別。
2. 單例:提供了一種受約束的物件建立機制,確保指定類別只有一個實例。
3. 抽象工廠:允許為一組相關類別中的類別建立實例,而不必讓客戶機物件指定要實例的實際特定類別。
4. 原型:提供了一種簡單的物件創建方式,即從現有的物件複製物件。
5. 生成器:允許創建複雜的對象,可以只提供對象的類型和內容信息,並且使有關對象創建的詳細信息對客戶機保持透明。這種方式允許相同的建構過程產生不同的物件表示。