原型模式是乙個建立型的模式。該模式有乙個樣板例項,使用者從這個樣板物件中複製出乙個內部屬性一致的物件,這個過程也就是俗稱的「轉殖」。被複製的例項就是所稱的「原型」。
原型模式:用原型例項指定建立物件的種類,並通過拷貝這些原型建立新的物件通過實現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 拷貝分類 原型模式中的拷貝分為 淺拷貝 和 深拷貝 淺拷貝...