設計模式之原型模式總結

2021-08-19 20:46:35 字數 1388 閱讀 1292

術語快速解釋

其實原型模式說白了就是轉殖,用於建立重複的物件,同時又能保證效能。這種型別的設計模式屬於建立型模式,它提供了一種建立物件的最佳方式。這種模式是實現了乙個原型介面,該介面用於建立當前物件的轉殖。

為什麼能保證效能?

是因為,原型模式是在記憶體中的二進位製流的拷貝要比直接new好,特別是要在乙個很大的迴圈體中產生大量物件的時候,你覺得是直接複製好,還是執行一次迴圈再獲取一次要來的快?答案顯而易見。但是它也有乙個顯著的缺點,那就是既然是直接在記憶體中拷貝,那麼就根本不會執行建構函式,因為建構函式是用來初始化類的,而你是直接拷貝。所以需要注意這點

原型模式使用方式

轉殖有兩種方式淺轉殖,和深轉殖,當然這裡介紹原型模式用到簡單的深轉殖。具體兩者區別及高階用法用法請移步,不是這裡介紹的重點

實現步驟:

被複製的類需要實現clonenable介面, 該介面為標記介面(不含任何方法)

覆蓋clone()方法,訪問修飾符設為public。方法中呼叫super.clone()方法得到需要的複製物件。

將得到的複製物件返回,如果物件中有引用物件那麼對引用物件再轉殖一次。

class student implements cloneable  

public

intgetimage()

public

void

setnumber(int number)

public

void

setimage(string url)

@override

public object clone() catch(clonenotsupportedexception e)

return stu;

} }

原型模式有兩種用途

第一種:

當直接建立物件的代價比較大時(比如要進行網路操作獲取、資料庫操作之類的消耗資源時間的操作),則採用這種模式。例如,乙個物件需要在乙個高代價的資料庫操作之後被建立。我們可以快取該物件,在下乙個請求時返回它的轉殖,在需要的時候更新資料庫,以此來減少資料庫呼叫。

第二種:

這也是乙個比較重要的用途,那就是保護性用途,也就是某個物件對外只可讀,為了防止這個唯讀物件被修改,通常可以通過返回給乙個物件的拷貝的形式實現可讀。

拿我們生活中的例子來說就是,你有乙份重要的檔案,想給別人看,但是那個人你不知道他會不會對你檔案動手腳,改文字之類的,或者撕掉你的檔案。這個時候你就可以去列印店複製乙份給他,這樣他改了也不影響你原檔案。

設計模式之原型模式

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

設計模式之原型模式

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

設計模式之原型模式

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