当前位置 博文首页 > 小小张自由—>张有博:机房重构之单例模式的应用

    小小张自由—>张有博:机房重构之单例模式的应用

    作者:[db:作者] 时间:2021-09-14 19:47

    目录

    何为单例模式

    注意事项

    机房重构的应用


    何为单例模式

    保证一个类仅有一个实例,并提供一个访问它的全局访问点。

    这种模式涉及到一个单一的类,该类负责创建自己的对象,同时确保只有单个对象被创建。这个类提供了一种访问其唯一的对象的方式,可以直接访问,不需要实例化该类的对象。

    注意事项

    • 1、单例类只能有一个实例。
    • 2、单例类必须自己创建自己的唯一实例。
    • 3、单例类必须给所有其他对象提供这一实例。

    机房重构的应用

    //单例模式
    public partial class frmActivateCard : Form
    {
        //构造方法为私有private,这就堵死了外界利用new 创建此实例的可能
        private frmActivateCard()
        {
           InitializeComponent();
           //加载程序的皮肤包
           //若是窗体没有皮肤包,以下的两个this可以删掉
           this.skinEngine1 = new Sunisoft.IrisSkin.SkinEngine(((System.ComponentModel.Component)(this)));
           this.skinEngine1.SkinFile = Application.StartupPath + "//DeepCyan.ssk";
        }
        
        private static frmActivateCard frmActivate;
        //此方法是获得本类实例的唯一的全局访问点
        public static frmActivateCard GetInstance()
        {
            //若实例不存在或窗体已经被释放,new一个窗体的实例
            if (frmActivate==null || frmActivate.IsDisposed)
            {
               frmActivate = new frmActivateCard();
            }
                return frmActivate;
        }
    }

    调用GetInstance方法。GetInstance是一个静态方法,主要负责创建自己的唯一实例

     private void MenuItemActivateCard_Click(object sender, EventArgs e)
     {
        //单例模式,调用窗体
        frmActivateCard frmactivatecard = frmActivateCard.GetInstance();
        //设置子窗体的父窗体
        frmactivatecard.MdiParent = this;
        //显示一个新窗体
        frmactivatecard.Show();
    }

    若是想让自己的窗体更加美观,整体舒适简洁,可以移步到这条博客winfrom窗体美化。

    如果本篇博客对您有一定的帮助,大家记得留言+点赞哦。

    cs