文章首發個人部落格:
如果我們有乙個類(sheep),它裡面有兩個屬性,名稱(name),年齡(age)。現在我們有乙個它的例項(s1),我們需要按照這個例項的屬性再去建立兩個物件。1、sheep
@data
public
class
sheep
}
2、main
public
class
main
}
原型模式: 用原型例項指定建立物件的種類,並且通過拷貝這些原型,建立新的物件。
也就是我們使用clone方法進行物件的建立,我們對上面的sheep類新增clone方法。
1、改造後的sheep類
import lombok.data;
import lombok.tostring;
@data
@tostring
public
class
sheep
implements
cloneable
@override
protected sheep clone()
catch
(exception e)
return
(sheep)obj;
}}
2、main 測試
public
class
main
}
1、在上面的 sheep 類裡面新增乙個 屬性
private sheep friend;
2、測試
public
class
main
// 列印結果如下
小道仙 小道仙 小道仙
王哈哈 王哈哈 王哈哈
}
淺拷貝:在拷貝物件的時候對引用型別,沒有從新建立乙個物件,而是指向之前物件的引用。
深拷貝:解決淺拷貝存在的問題,我們去為引用型別建立乙個新的物件。
方式一:使用多次clone
@override
protected sheep clone()
}catch
(exception e)
return obj;
}
方式二:使用序列化和反序列化 (注:需要實現序列化介面 implements serializable)
@override
protected sheep clone()
catch
(exception e)
finally
catch
(exception e)
}}
兩種方法的測試**如下,結果也都一樣
建立型模式 原型模式
使用原型例項指定建立物件的種類,並且通過轉殖這些原型建立新的物件 原理是將乙個原型物件傳給要發動建立的物件,該物件通過請求原型物件轉殖自己來建立過程 轉殖方法 public prototype clone jdk中為我們提供了轉殖的方法clone 從object繼承下來,乙個物件要實現轉殖,需要實現...
建立型模式 原型模式
原型 prototype 模式主要用於建立物件的轉殖,通常其最簡單的形式就是採用自定 clone 函式並 傳入物件引數以返回此物件的乙個副本,這在 python 實作上可使用內定 copy.cop y 或 copy.deepcopy 函式來達到此目的。當已有乙個物件但對此物件的某些部分會被變更卻又想...
建立型模式 原型模式 prototype
用原型例項指定建立物件的種類,並且通過拷貝這些原型建立新的物件。main.cc include include software computer.h design pattern prototype for example,the company to employees with compute...