原型設計模式

一、應用場景

在一個特定的場景中經常需要出現多個相同但狀態各異的對象,通常的解決方法是通過new創建這些對象之後分別去設置這些對象的狀態。原型設計模式提供了更快捷、更有效的解決方法。

二、意圖

通過複製(克隆、拷貝)一個指定類型的對象來創建更多同類型的對象。這個指定的對象可被稱爲“原型”對象,也就是通過複製原型對象來得到更多同類型的對象。

三、說明

原型設計模式的拷貝可以被分爲深拷貝與淺拷貝。

深拷貝是指複製後的對象同原型對象不共享任何數據。如對象A內的一個引用字段,它同複製對象B內的相同引用字段不引用相同的對象,而是爲對象B創建一個新的引用對象。

淺拷貝不同於深拷貝,它的原型內的引用字段同複製對象內的引用字段,引用的是同一個對象。

C#中的拷貝可以使用Object類的成員MemberwiseClone進行淺拷貝,可以使用BinaryFormatter.Serialized成員串行化技術來進行深度拷貝。

C++中的拷貝直接使用類中的複製構造函數進行拷貝。

四、例子

public Interface Car

{

    string CarName{get;set;}

    Car Clone();
}

public class NewCar:Car

{

    private string m_carName;

    public string CarName

    {

        get

        {

             return m_carName;

        }

        set

       {

             m_carName=value;

       }

    }

    public override Car Clone()

    {

         拷貝代碼

    }
}

void Main()

{

    Car car1=new NewCar();

    car1.CarName="小汽車";

    Car car2=car1.Clone();

    car2.CarName="大卡車";

}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章