1. 程式人生 > >使用性的單例模式,專案中應用

使用性的單例模式,專案中應用

  • 實現階段進階:

如果檢視書本上單例模式,簡單一句話,都是如何實現。

並且實現務必有 Class.GetInstance() 的語句。這種方式的缺點還一個就是程式碼的可讀性受影響; 原因區別於非單例的程式碼new Class();

並且對於庫的引用者的視角需要明白單例一說。

那麼如何解決這個問題呢?

封裝

(使用SingleInterface 封裝SingleTon)

    public class SingleTon
    {
        private static int fieldNumber;

        public int FieldNumber
        {
            get { return fieldNumber; }
            set { fieldNumber = value; }
        }

        private SingleTon()
        {
        }

        private static SingleTon instence;

        public static SingleTon GetInstance()
        {
            if (instence == null)
            {
                instence = new SingleTon();
            }
            return instence;
        }

        public void MethodA()
        {
            Console.WriteLine("SingleTon :{0}", fieldNumber++);
        }
    }

    public class SingleInterface
    {
        private SingleTon singleClent;
        public SingleInterface()
        {
        }

        public void Initialize()
        {
            singleClent = SingleTon.GetInstance();
        }

        public void MethodA()
        {
            singleClent.MethodA();
        }
    }

  • 實用階段

如果不做處理 這種方式只能應用於,單程序中;

唯有將所有引用單例的庫或應用  只能執行與一個可執行檔案中。原因:作業系統給每個程序分配單獨的記憶體塊;

如果EXEa.exe和EXEb.exe 通過引用的方式載入單例庫,不能實現單例的作用。

解決辦法:

模式結合;結合SOA; 將單例獨立成服務。