設計模式 懶漢模式,餓漢模式

2021-08-28 10:33:21 字數 1795 閱讀 7230

設計模式:懶漢模式,餓漢模式

單列設計模式:保證了乙個類在記憶體中只能有有乙個物件,比如多執行緒訪問乙個配置檔案。希望多程式

都是操作的是同乙個配置檔案的資料。那麼就需要保證該檔案物件的唯一性。

思路:1.怎麼做才能保證這個物件是唯一的?其他程式通過new建立該類物件是根本無法控制個數,那麼,

就不讓其他程式建立該類的物件了。因為不可以控制,2.不讓其他程式建立,就讓在本類中自己建立乙個物件。

3.該類將建立的物件對外提供,讓其他程式獲取並使用。

步驟:1.怎麼實現不讓其他程式建立該類物件呢?將該類的建構函式私有化。

比如:class single

;    //這裡我們就是私有化構造方法

}2.在本類中建立乙個本類的物件

class single

;    

private single s=new single();

}3.定義乙個方法,返回值是本類型別。讓他其他程式通過該方法就可以獲得該類物件。但是這個方法一定是public的

//這個是餓漢式的。開發的時候我們一般會設計到多執行緒的問題式,懶漢是會導致一系列的安全隱患。但是懶漢

//是單例模式中的重要考察點

//餓漢單列模式

class single    

;    

private static final single s=new single();

public static single getinstance()

}//接下來我們就是懶漢模式了  (這裡是不加鎖的)

class single1

;    

private static single1 s=null;

public static single1 getinstance()

}class single1

;    

private static single1 s=null;

public static single1 getinstance()}}

}return s;}}

這裡我們講解一下這裡的思路就是:

餓漢就是:我非常餓。在類建立的同時就例項話乙個靜態物件出來,不管之後會不會用這個單列,都會佔據一定的記憶體。

造成記憶體洩漏,但相應的,在第一次呼叫是速度也會很快。

懶漢就是:我非常懶。你在使用我的時候,我才會建立你,不然的話,我都是不刁你。第一次呼叫是要做初始化,如果要做的工作比較繁忙,

效能上會有延遲。之後就和餓漢一樣了。

工廠模式:

簡單工廠:就是靜態工廠,工廠類中,有乙個factory,根據條件決定乙個介面由哪個具體產品類來實現。

工廠方法:建立多個工廠類。各個工廠類中,都對應乙個獲得介面a例項的方法。使用者決定使用哪個工廠。

抽象工廠:對工廠方法進行擴充套件。各個工廠類中,再增加乙個獲得介面b例項的方法。

提一下,多個工廠類都繼承自同乙個介面。

裝飾著模式:裝飾模式是在不必改變原類檔案和使用繼承的情況下,動態地擴充套件乙個物件的功能。它是通過建立乙個包裝物件,也就是裝飾來包裹真實的物件。

這是裝飾模式的乙個典型應用, 使用dataoutputstream封裝了乙個fileoutputstream, 以方便進行輸出流處理

outputstream out = new dataoutputstream( new fileoutputstream( "test.txt") )

職責鏈模式(chain of responsibility):使多個物件都有機會處理同乙個請求,從而避免請求的傳送者和接收者之間的耦合關係。將這些物件連成一條鏈,並沿著這條鏈傳遞該請求,直到有乙個物件處理它為止。

單類設計模式 餓漢模式 懶漢模式

單例設計模式 保證乙個類在記憶體中只有乙個物件。模式 模式就是解決 一類 問題的固定步驟 模式的概念最早起源於建築行業.建房子的步驟都是一樣子 打地基 澆柱子 蓋樓面 砌牆 封 頂 裝修 入住 軟體行業中23種設計模式 單例設計模式 模板設計模式 裝飾者設計模式 觀察者設計模式 工廠設計模式 單例設...

設計模式 單例模式 懶漢模式 餓漢模式

什麼是單例模式?就是自始至終只有乙個例項,不管new多少次物件,他們都指向同乙個引用。保證整個應用中某個例項有且只能有乙個。比如古代只能有乙個皇帝。一些物件我們只需要乙個,比如 配置檔案 工具類 執行緒池 快取 日誌物件等。如果創作出多個例項,就會導致很多問題,比如占用過多資源,不一致的結果等。單例...

餓漢模式和懶漢模式

package pattern.singleton 餓漢式單例類.在類初始化時,已經自行例項化 public class singleton1 已經自行例項化 private static final singleton1 single new singleton1 靜態工廠方法 public st...