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;posted onusing 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()}}
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章了...