設計模式之原型模式

2021-07-10 05:00:36 字數 1609 閱讀 5416

原型模式是乙個建立型的模式,所謂原型就是有乙個樣板示例,使用者可以從這個樣板示例物件中複製出乙個內部屬性一致的物件

被複製的示例我們稱它為「原型」,原型模式適用於建立耗時的或複雜的物件,因為此時直接複製乙個存在的物件會使程式執行更為高效執行。

原型模式的使用場景:

(1)類初始化的時候消耗很多的資源,通過原型拷貝避免這些消耗。

(2)new物件時需要非常多的資料準備或訪問許可權。

(3)乙個物件要提供給其他物件訪問,而且各個呼叫者都可能修改其值時,可以用原型模式拷貝多個物件讓呼叫者使用。

下面咱們先來介紹下咱們要寫的東西

1.client客戶端

2.prototype:抽象類或介面,具備clone(轉殖)能力。

3.具體的原型類

下面我們來做乙個簡單的示例:我們先建立了乙個文件物件word,在這個word中有和文字,使用者經過很長時間內容編輯後,打算進一步編輯,但修改後的不一定適用,所以我們要先拷貝乙份,以防萬一。然後再在拷貝檔案上進行修改。這個要被拷貝的文件就是原型。

這個文件相當於原型類,cloneable介面代表具備轉殖能力的prototype。

public

class

word

implements

cloneable

@override

//用於轉殖的方法也是實現cloneable介面重寫的方法clone()

protected word clone() catch (exception e)

return

null;

}public string gettext()

public

void

settext(string text)

public arraylistgetimage()

public

void

addimage(string img)

/** 列印文件內容

*/public

void

showword()

system.out.println("word end--------------");

}}**這裡注意一下clone()方法並不是clonebable這個介面中的方法,而是object中的方法。cloneable介面只是作為乙個檔案可拷貝的標識,否則直接呼叫clone()方法會丟擲異常。**

下面咱們再來看看客戶端的**:

public class client }

下面我們來看看執行結果:

我們可以看到doc2是b.clone()建立的,並且doc2第一次輸出和b 的輸出是一樣的,doc2就是 b 的拷貝檔案,內容相同,doc2的文字修改後不會影響到 b 的文字。這就保證了 b 的安全性。

注意一點:執行clone方法時轉殖時不會執行構造方法,所以當你想在構造方法裡進行某些初始化時要多留意一下。

好了,上面就是原型設計模式簡單的實現。大家可以自己更深入地去研究哦。

設計模式之原型模式

原型模式其實就是從乙個物件再建立乙個可定製的物件,而且不需要知道建立的細節。具體就是說通過複製或者轉殖乙個原型物件產生新的物件 轉殖物件 分為兩種 深複製或者淺複製,這兩種的主要區別是 在原型中如果有物件的引用,淺複製是將引用複製過來了,也就是淺複製和原型中的物件的引用相同,而深複製是將轉殖物件中引...

設計模式之原型模式

include include 此練習為原型模式方法的練習 原型模式揭示了在同一原型上可以通過複製使得 只需要例項化一次,再通過相應的類函式操作可以得到 同一原型下的不同的版本物件 此練習將考慮在實際開發中 比如 工作經歷也是作為乙個類被含在簡歷類中的情況 這情況將涉及到類的引用和深 淺複製 原型基...

設計模式之原型模式

原型模式的思想就是將乙個物件作為原型,對其進行複製 轉殖,產生乙個和原物件類似的新物件 複製過程可分為淺複製和深複製。淺複製是指直接呼叫父類 即object類 的clone方法 super.clone 該方法是本地 native 方法,呼叫該方法clone出來的新物件,基本資料型別的屬性變數是新建立...