1. 程式人生 > >設計模式 之 原型設計模式

設計模式 之 原型設計模式

(一)原型設計模式 結構圖

 

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

 

(二) 原型模式程式碼

原型類

abstract class Prototype{
    private String id;
    
    public Prototype(String id){
           thid.id = id;       
    }
    public String Id{
           get{ retrun id;}    
    }  
    public
abstract Prototype Clone(); }

 

具體原型類

 

class ConcretePrototype1 : Prototype{
  public ConcretePrototype1(String id) : base(id){
  }
  
  public override Prototype Clone(){
    return (Prototype)this.MemberwiseClone();
  } 
}

 

客戶端程式碼

 

static void Main(String[] args){

  ConcretePrototype1 p1 
= new  ConcretePrototype1("I");   ConcretePrototype1 c1 = (ConcretePrototype1)p1.Clone();   Console.WriteLine("Cloned:{0}",c1.Id);   Console.Read(); }

(三)淺賦值和深複製

  如果欄位是值型別的,則對該欄位執行逐位複製,如果欄位是引用型別,則複製引用但不復制引用的物件.

   

  淺複製: 被複制物件的所有變數都含有與原來的物件相同的值,而所有的對其他物件的引用都仍然指向原來的物件.

  深複製: 深複製把引用物件的變數指向複製過的新物件,而不是原有的被引用的物件.