設計模式 六 原型模式

2021-10-21 16:52:58 字數 2265 閱讀 5148

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

原型模式就是從乙個物件再建立另外乙個可定製的物件,而且不需要知道任何建立的細節。

淺複製,深複製

淺複製,複製值型別的實域,對引用型別的實域只複製引用不複製引用的物件,即轉殖出來的物件b和原物件a引用同乙個物件型別的實域c,在b的方法改變b中的c會影響a中的c

//簡歷類,實現cloneable介面

public

class

resume

implements

cloneable

public

void

setinfo

(string ***, string age)

public

void

setwork

(string time, string company)

@override

protected object clone()

throws clonenotsupportedexception

@override

public string tostring()

';}public

static

void

main

(string[

] args)

throws clonenotsupportedexception

}

輸出:

resume

resume

如果改為物件work持有timecompany實域,淺複製無法完成引用物件的複製,只複製了引用

//簡歷類,實現cloneable介面

public

class

resume

implements

cloneable

public

void

setinfo

(string ***, string age)

public

void

setwork

(string time, string company)

@override

protected object clone()

throws clonenotsupportedexception

@override

public string tostring()

';}public

static

void

main

(string[

] args)

throws clonenotsupportedexception

}

深複製,對引用物件work也進行複製。

//簡歷類,實現cloneable介面

public

class

resume

implements

cloneable

//轉殖引用物件的介面

public

void

setwork

(work work)

public

void

setinfo

(string ***, string age)

public

void

setwork

(string time, string company)

@override

protected resume clone()

throws clonenotsupportedexception

@override

public string tostring()

';}public

static

void

main

(string[

] args)

throws clonenotsupportedexception

}

輸出:

resume

resume

設計模式(六)原型模式

原型模式 用原型例項建立指定物件的種類,並且通過拷貝這些原型建立新的物件 要實現建立原型,需要實現cloneable介面,重寫clone 方法 基本的原型模式,物件的屬性沒有引用型別 public class prototype implements cloneable public string ...

設計模式 之六 原型模式ProtoType

設計模式之 六 原型模式prototype 適用範圍 用原型例項指定建立物件的各類並且通過拷貝這些原型建立新的物件 書中例項 簡歷模型。原型模式結構圖如下所示。關鍵 如下 1 父類iprototype.h 抽象方法 virtual iprototype clone 0 iprototype.cpp ...

小話設計模式六 原型模式

原型模式定義 用原型例項指定建立物件的種類,並且通過拷貝這些原型建立新的物件。原型模式解析 原型模式是一種建立型設計模式,該模式允許乙個物件再建立另外乙個可定製的物件,根本無需知道任何如何建立的細節,工作原理是 通過將乙個原型物件傳給那個要發動建立的物件,這個要發動建立的物件通過請求原型物件拷貝它們...