1. 程式人生 > >.net設計模式 (原型模式)學習筆記

.net設計模式 (原型模式)學習筆記

運用設計模式只是為了解決一類問題的,當解決掉當前一類問題,通常會在解決這個問題時候 帶來其他問題  合理應用揚長避短


建立型模式:        

                     .net設計模式 (原型模式)學習筆記

概念: 和單例模式相比較。在對單例模式 引用的時候 實際上 引用的是 同一個物件。 有些時候 我們想引用不同的物件,又想 快速的建立物件。這個時候就可以 使用 原型模式;在  .net 中  成為 淺拷貝。  要注意的是淺拷貝 引用型別還是 引用 同一塊地址

  

    /// <summary>
    /// 單例
    /// </summary>
    public class Singleton
    {
        private Singleton()
        {

        }
        /// <summary>
        /// 靜態變數: 會在類初始化之前呼叫,而且只會呼叫一次
        /// </summary>
        private static Singleton singleton = new Singleton();

        public static Singleton GetSingleton()
        {
            return singleton;
        }


        public static Singleton  GetSingletonProto()
        {
            return (Singleton)singleton.MemberwiseClone();
        }
    }






    class Program
    {
        static void Main(string[] args)
        {

            Singleton singletonA = Singleton.GetSingleton();


            //淺拷貝 不同於 Singleton.GetSingleton();  
            //值型別是全新的訪問地址, 但對於引用型別來講 還是用一塊 地址
            //
            //如果想要將引用型別的 地址 也是新的, 就需要用到 深拷貝
            Singleton singletonB = Singleton.GetSingletonProto();



        }
    }