原型模式:用原型實例指定創建對象的種類,並通過拷貝這些原型創建新的對象;
以下爲原型模式的UML圖:
運行模式實際就是通過一個對象再創建另一個可定製的對象,而且不需要知道任何創建的細節;
實現代碼如下:abstract class ProtoType
{
private string id;
public ProtoType(string id)
{
this.id = id;
}
public string ID
{
get { return this.id; }
}
public abstract ProtoType Clone();
}
class ConcreteProtoTypeA : ProtoType
{
public ConcreteProtoTypeA(string id)
: base(id)
{ }
public override ProtoType Clone()
{
return (ProtoType)this.MemberwiseClone();
}
}
創建當前對象的淺表副本,方法時創建一個新對象,將當前對象的非靜態字段複製到該新對象,如果字段是值類型,則對該字段執行逐位複製,如果是引用類型,則複製引用但不復制引用的對象,因此,原始對象及其副本引用同一對象;
起始對於.Net而言,原型抽象類ProtoTyoe不需要,只需要類實現IClone接口,在Clone方法中實現對象的複製即可;