Java設計模式 原型模式

2021-08-17 09:21:46 字數 1427 閱讀 4132

原型模式是乙個建立型的模式。該模式有乙個樣板例項,使用者從這個樣板物件中複製出乙個內部屬性一致的物件,這個過程也就是俗稱的「轉殖」。被複製的例項就是所稱的「原型」。

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

通過實現cloneable介面:

public

class

worddocument

implements

cloneable

@override

protected worddocument clone() catch (exception e)

return

null;

}public string getmtext()

public

void

setmtext(string mtext)

public listgetmimages()

public

void

addimage(string img)

}

淺拷貝:也稱影子拷貝,副本並不是將原型所有欄位都重新構造,而是引用。

深拷貝:即拷貝物件時,對引用型的字段也要採用拷貝形式,並不是單純的引用

需要拷貝時呼叫clone()

worddocument origindoc = new worddocument();

origindoc.setmtext("這是一篇文章");

origindoc.addimage("1");

origindoc.addimage("2");

worddocument doc = origindoc.clone();

public object clone()  catch (clonenotsupportedexception e) 

}

@override

public object clone()

使用原型模式可以解決構建複雜物件的資源消耗問題,能夠在某些場景提公升建立物件的效率。還有乙個重要用途就是保護性拷貝,也就是某個物件對外可能是唯讀的,為了防止外部對這個唯讀物件修改,通常可以返回乙個物件拷貝的形式實現唯讀的限制。

注意淺拷貝、深拷貝的區別

優點:原型模式是在記憶體中二進位製流的拷貝,要比直接new乙個物件效能好很多,特別是在乙個迴圈體內產生大量的物件時,原型模型可以更好地體現其優點

缺點:直接在記憶體中拷貝,建構函式是不會執行的,實際開發要考慮這個潛在問題

java設計模式 原型模式(Prototype)

prototype原型模式是一種建立型設計模式,prototype模式允許乙個物件再建立另外乙個可定製的物件,根本無需知道任何如何建立的細節,工作原理是 通過將乙個原型物件傳給那個要發動建立的物件,這個要發動建立的物件通過請求原型物件拷貝它們自己來實施建立 原型模式實際上非常簡單,只是要實現clon...

Java設計模式 02原型模式

1 概念 通過複製現有例項來建立新的例項,無需知道相應類的資訊。2 示例 1 實現cloneable介面 public class mail implements cloneable catch clonenotsupportedexception e return clonemail set ge...

Java設計模式4 原型模式

原型模式是一種建立型設計模式,它通過複製乙個已經存在的例項來返回新的例項,而不是新建例項.被複製的例項就是我們所稱的原型,這個原型是可定製的.說白了就是乙個類實現了cloneable,重寫clone方法,就可以呼叫這個類的物件複製例項了。1 拷貝分類 原型模式中的拷貝分為 淺拷貝 和 深拷貝 淺拷貝...