常用的設計模式

2021-08-29 03:46:40 字數 1854 閱讀 6872

設計模式

是一套反覆使用,多數人知曉的,經過分類的**設計的總結。其目的是為了**更容易被他人理解,保證**可考性,設計模式使**真正的工程化,設計模式是軟體工程的基礎之路。

設計模式一般分為三種大的型別:

建立型模式,如單例模式,工廠模式,抽象工廠模式,建造者模式,原型模式等等。

結構型模式,如介面卡模式,橋接模式,裝飾模式,組合模式,外觀莫歐式,**模式等等。

行為型模式,如模板模式,命令模式,迭代模式,狀態模式,觀察者模式等等。

單例模式(singleton):

定義:單例物件的類只允許乙個例項存在。

建立規則:私有構造器,將其本身作為靜態的私有的屬性新增到類上。通過靜態方法得到類的例項。

建立單例模式有很多方法。如:餓漢式,靜態**塊建立,呼叫靜態方法,判斷是否為null,雙重檢查,靜態內部類,列舉等方式。

public class singleton;

prvate static singleton getinstancte(){

if(singleton==null){

syschronized(singleton.class){

if(singleton==null)

singleton=new singleton();

進行兩次if檢查,可以保證執行緒安全。優點:執行緒安全,延遲載入,效率較高。

單例模式使用的場景:

需要頻繁的建立和銷毀的物件;

建立物件時耗時過多,或者資源消耗過多的時候;

工具類物件;

頻繁訪問資料庫或者檔案的物件。

工廠模式

最常用的例項化物件的模式,用工廠方法替代new 操作。(如beanfactory ,sqlsessionfactory等)

意圖:定義乙個建立物件的介面,讓其子類自己決定例項化哪乙個工廠類,使其建立過程延遲到子類。

優點:工廠方式為系統提供了非常靈活的強大的動態擴充套件機制。修改實現類就修改其很多讀東西。

使用場景:日誌記錄(記憶體,硬碟,行動硬碟),資料庫訪問(訪問不同的資料庫),連線伺服器的框架等等。

(因為生產的子類不同,且子類有不同的子類,把上層的轉化為抽象類,實現類完成工廠生產,就是抽象工廠模式)

建造者模式

使用多個簡單的物件一步一步構建乙個複雜的物件,提供了一種建立物件的最佳方式。

意圖:將乙個複雜的構建與其表示相分離,使得同樣鵝構建過程,建立不同的表示。

使用場景:需要生成物件有複雜的內部結構,生成的物件內部屬性本身相互依賴。

優點:建造者模式用在構件的裝配方面,如果通過不同的元件或者相同的元件不同的順序,可以產生出乙個新的物件,它可以產生乙個非常靈活的架構,方便的擴充套件和維護系統。

抽象工廠模式和建造者模式的區別。

抽象工廠模式關注生產產品的整體。建造者模式更加關注物件構建的過程。

希望遮蔽物件的建立過程,只提供乙個封裝良好的物件,使用抽象工廠模式。

模板模式

乙個抽象類公開定義了執行它的方法,它的子類可以按照要求,重寫方法實現,但呼叫將以抽象類中的定義方式進行。

意圖:定義乙個操作中的演算法的骨架。而將一些步驟延遲到子類中,模板方法使得子類可以不改變乙個演算法的結構即可重新定義演算法的某些特定步驟。

優點:封裝不變的部分,擴充套件可變的部分,提取公共**,便於維護,行為由父類控制,子類實現。

使用場景:有多個子類共有的方法且邏輯相同,重要的,複雜的方法,一般這上面加final修飾,防止篡改。

**模式

乙個類代表另外乙個類的功能。為某些物件提供乙個**,可以控制這個物件的訪問。

優點:職責清晰,高擴充套件性,智慧型化。

使用場景:按職責分;遠端**,虛擬**,保護**,日誌**等等。

設計模式代表了現階段的最強實踐,是軟體開發人員長時間實驗和錯誤總結出來的。

設計模式 常用的設計模式介紹

簡單點說,就是乙個應用程式中,某個類的例項物件只有乙個,你沒有辦法去new,因為構造器是被private修飾的,一般通過getinstance 的方法來獲取它們的例項。getinstance 的返回值是乙個物件的引用,並不是乙個新的例項 懶漢式 執行緒不安全 public class singlet...

常用的設計模式

1 單例設計模式 單例設計模式主要是用於該類在專案中只能乙個例項,並對外提供獲取這乙個例項的方法 單例設計模式有餓漢式和飽漢式,其中餓漢式單例設計模式的特點是 執行緒安全,效率低 飽漢式單例設計模式的特點是 效率高,執行緒不安全 餓漢式單例設計模式 private singledemo privat...

常用的設計模式

閒來無聊學習學習設計模式,設計模式太多了,好像有20多種,其實在平時工作中沒有用到很多,有的在不經意之間就已經使用了,現在總結一些平時使用比較多的設計模式。概念 1.可以來劃分命名空間,從而清除全域性變數所帶來的危險。2.利用分支技術來來封裝瀏覽器之間的差異。3.可以把 組織的更為一體,便於閱讀和維...