設計模式之 原型模式

2022-07-15 19:18:09 字數 1733 閱讀 7957

1.原型模式定義

原型模式非常簡單,定義如下:

用原型例項指定建立物件的種類,並且通過拷貝這些原型建立新的物件

2.通用類圖

原型模式的核心是實現cloneable介面,此介面為jdk提供的乙個標識介面,只有實現了此介面的類才能被拷貝。

原型模式的通用類圖如下;

3.通用原型實現**

原型類:

public class concreteprototype implements cloneable 

public int getid()

public void setid(int id)

public string getname()

public void setname(string name)

@override

protected object clone() throws clonenotsupportedexception catch (exception e)

return concreteprototype;

}@override

public string tostring() ';}}

client測試**:

public class client 

}

輸出結果如下:

concreteprototype construct.

concreteprototype

concreteprototype

通過輸出結果可以看出,通過clone方法拷貝了乙個新的物件。

4.原型模式的優點

1.效能優良

原型模式是在記憶體中二進位製流的拷貝,要比直接new乙個物件快的多

2.通過3中的輸出結果來看,在clone物件的時候建構函式不會執行,這對於一些需要在建構函式中做一些初始化的類來說可能稱為約束

5.需要注意的點

在原型模式拷貝的時候需要注意可變引用型別的屬性,下面通過乙個例子來說明此問題:

拷貝物件:

public class deepclone implements cloneable

public mapgetmap()

@override

protected object clone() throws clonenotsupportedexception catch (exception e)

return deepclone;}}

client類

public class client 

}

輸出結果如下:

在使用clone方法拷貝物件的時候引用型別的屬性不會繼續做拷貝,而是多個拷貝物件使用同乙個屬性,這種被稱為淺拷貝。

下面對clone方法重寫完成深拷貝:

@override

protected object clone() throws clonenotsupportedexception catch (exception e)

return deepclone;

}

重新執行client輸出結果為:

設計模式之原型模式

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

設計模式之原型模式

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

設計模式之原型模式

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