設計模式 拷貝和原型模式

2021-10-09 07:26:19 字數 1069 閱讀 5775

我對於設計模式還是一知半解的,最近看了幾個設計模式,單例模式和工廠模式是比較基礎和簡單的,這裡我就不贅述了,但是他們是最為普遍的設計模式,不了解的小夥伴們還是去看看為好。

關於拷貝,這篇文章寫得特別好,深入淺出。

總結起來就是:類初始化的過程比作列印,拷貝的過程比作影印。

類載入的過程很複雜,如果我們迴圈的使用new來初始化物件的話,對於效能的壓力是非常大的。而拷貝物件不是重新建立乙個物件,而是在記憶體中進行資料塊的拷貝,複製已有的物件。

淺拷貝只拷貝你指定的物件,至於你指定的物件裡面的別的物件,它不拷貝,還是把引用給你,共享變數,這是一種非常不安全的方式,需要特別注意。

public class aaa implements cloneable 

public string getname()

@override

protected aaa clone()catch (clonenotsupportedexception e)

return aaa;

}}

實現深拷貝,把指定的物件裡面的物件例項化出來就可以了。

public class aaa implements cloneable 

public string getname()

@override

protected aaa clone()catch (clonenotsupportedexception e)

return aaa;

}}

其實拷貝的過程就是原型模式,是用於建立重複的物件,同時又能保證效能。

1.在需要乙個類的大量物件的時候,使用原型模式是最佳選擇,因為原型模式是在記憶體中對這個物件進行拷貝,要比直接new這個物件效能要好很多,在這種情況下,需要的物件越多,原型模式體現出的優點越明顯。

2.如果乙個物件的初始化需要很多其他物件的資料準備或其他資源的繁瑣計算,那麼可以使用原型模式。

3.當需要乙個物件的大量公共資訊,少量字段進行個性化設定的時候,也可以使用原型模式拷貝出現有物件的副本進行加工處理。

設計模式 原型模式介紹 原型模式的深拷貝問題

轉殖羊問題 有乙個羊,是乙個類,有對應的屬性,要求建立完全一樣的10隻羊出來。那麼實現起來很簡單,我們先寫出羊的類 public class sheep然後,建立10只一樣的羊,就在客戶端寫乙個 建立 原始羊 sheep sheep new sheep tom 1,白色 轉殖羊 sheep shee...

設計模式(五) 拷貝複製 原型模式

原型模式 prototype pattern 是用於建立重複的物件,同時又能保證效能。這種型別的設計模式屬於建立型模式,它提供了一種建立物件的最佳方式。其實所謂的原型模式本質上是在勒種預留的對物件的複製介面。對於一些初始化資訊發生變化不大的情況下,可以採用clone的方式建立物件,不用每次都是重新初...

設計模式 原型模式

1.首先分析原型模式的由來 一般來說,建立乙個物件可以由以下方法 知道物件的具體型別,直接用new生成。不知道型號,知道相應的需求,可以使用工廠方法模式。根據乙個已有的物件來複製為乙個新的物件,可以使用原型模式。2.原型模式可以簡單理解為拷貝原型物件得到新的物件。想象乙個配鑰匙的小店,給店主乙個原有...