原型模式(Prototype)

2021-09-11 03:36:42 字數 2379 閱讀 5493

1. 原型模式用原型例項(類中有乙個複製自己的方法)指定建立物件的種類,並且通過拷貝這些原型建立新的物件。

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

3.對於.net 在system命名空間中提供了icloneable 介面,其中有乙個唯一的方法就是clone()。所以只需要實現這個介面就可以完成原型模式了,代替了上圖中的prototype抽象類。

4. 一般在初始化的資訊不發生變化的情況下,轉殖是最好的辦法。這既隱藏了物件建立的細節,又對效能是大大的提高。

5. 不用重新初始化物件,而是動態地獲得物件當前執行時的狀態。

淺複製與深複製

6.memberwiseclone()方法是這樣,如果欄位是值型別的,則對該值執行逐位複製,如果欄位是引用型別,則複製引用但不複製引用的物件;因此,原型物件及其副本引用同乙個物件。如果有物件型別的引用成員,那麼引用的物件資料是不會被轉殖的。

7.淺複製不會去複製引用型別的物件,而是僅僅複製了引用本身。被複製物件的所有變數都含有與原來的物件相同的值,而所有的對其他物件的引用都仍然只想原來的物件。

8.深複製把引用物件的變數指向複製過的新物件,而不是原有的被引用的物件,所以存在乙個層次複製的問題,就是引用中包含引用,需要一層一層的都複製了。

9.dataset 中的clone()方法實現了淺複製,僅拷貝結構。copy()方法實現了深複製,除結構外還包含資料。

10.在類中繼承icloneable 介面實現clone方法,自己複製自己叫做原型模式

淺複製

using system;

using system.collections.generic;

using system.text;

namespace 原型模式

}//簡歷

class

resume : icloneable

//設定個人資訊

public void setpersonalinfo(string ***, string age)

//設定工作經歷

public void setworkexperience(string workdate, string company)

//顯示

public void display()

", name, ***, age);

console.writeline("工作經歷: ", work.workdate, work.company);

}public

object clone()

}//工作經歷

class

workexperience

set

}private string company;

public string company

set }}

}

深複製

using system;

using system.collections.generic;

using system.text;

using system.data;

namespace 原型模式

}//簡歷

class

resume : icloneable

private resume(workexperience work)

//設定個人資訊

public void setpersonalinfo(string ***, string age)

//設定工作經歷

public void setworkexperience(string workdate, string company)

//顯示

public void display()

", name, ***, age);

console.writeline("工作經歷: ", work.workdate, work.company);

}public

object clone()

}//工作經歷

class

workexperience : icloneable

set

}private string company;

public string company

set

}public

object clone()}}

posted on

2009-12-01 12:53

...)

編輯收藏

原型模式(ProtoType)

1.目的 當需要從乙個物件copy出另外乙個物件時,可以使用原型模式,本質上是呼叫的copy建構函式 與copy建構函式的區別,可能就是不需要顯示的生成物件,而是通過函式呼叫 2.prototype.h ifndef prototype h define prototype h include in...

Prototype 原型模式

prototype 原型模式 所謂原型模式,就是可以根據乙個原型,快速建立出其拷貝。如 int a 1 int b new int a a cout a endl cout b endl 輸出結果 2 1 上面就使用了原型模式。根據原型a,快速建立出了a的拷貝b。同時,b儲存了a當時的狀態。當a之後...

原型模式 Prototype

用原型例項指定建立物件的種類,並且通過拷貝這些原型建立新的物件。原型模式是一種建立型設計模式,它允許乙個物件再建立另外乙個可定製的物件,根本無需知道任何如何建立的細節,工作原理是通過將乙個原型物件傳給那個要發動建立的物件,這個要發動的物件通過請求原型物件拷貝它們自己來實施建立。現實很殘酷,都第9章了...