單例模式的使用與說明

環境說明: 本方法不針對多線程。

1.在窗體應用程序中,很多的窗體只能也只需要出現一次,這就需要使用到單例模式。

2.當需要設置爲單例模式的窗體少量較少時,我們可以進行對窗體進行使用單例,但是過多時如何去實現單例。


理解說明:對象的創建需要三步驟,我們能操作的只有在對象創建的第三部,也就是調用構造函數,那麼實現單例只能通過操作構造函數來實現單例。


舉例:

1.窗體的單例模式操作:

        1.1將窗體的構造函數私有化。

        1.2創建靜態字段用於存儲窗體。

        1.3創建靜態函數用於獲取窗體。

        1.4必須對窗體的Closeing的事件進行處理,否則會報異常"無法操作已經釋放的資源"

        1.5使用該窗體直接使用類+函數就可以不斷調用唯一的窗體。

        private OnlyForm()
        {
            InitializeComponent();
        }

        private static OnlyForm _onlyForm;

        public static OnlyForm GetOnlyForm()
        {
            if (_onlyForm == null)
            {
                _onlyForm = new OnlyForm();
            }
            return _onlyForm;
        }

        private void OnlyForm_FormClosing(object sender, FormClosingEventArgs e)
        {
            _onlyForm = new OnlyForm();
        }


2.對過多窗體實現單例模式

     2.1創建一個單例類,單例類創建方式和使用單例模式一樣。

     2.2創建窗體的屬性,由於類使用了單例模式只能創建一個對象,那麼屬性也就是唯一的。

     2.3多個窗體的在單例類中創建多個屬性即可。

     

        //單例類
        private SetOnly()
        {
        }

        private static SetOnly _setOnly;

        public static SetOnly GetOnly()
        {
            if (_setOnly == null)
                _setOnly = new SetOnly();
            return _setOnly;
         }

        public Form2 GetForm2 { get; set; }

        //其他窗體展示單例窗體代碼
        private void button2_Click(object sender, EventArgs e)
        {
            if (setOnly.GetForm2 == null)
                setOnly.GetForm2 = new Form2();
            setOnly.GetForm2.Show();
        }


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