机房重构之单例模式的应用(懒汉式)

目录

单例模式(what)

单例模式的种类

注意事项

机房重构的应用(懒汉式)


单例模式(what)

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

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

单例模式的种类

饿汉式:在自己被加载时就将自己实例化

懒汉式:在第一次被引用时,才会将自己实例化

注意事项

单例类只能有一个实例。

单例类必须自己创建自己的唯一实例

单例类必须给所有其他对象提供这一实例

机房重构的应用(懒汉式)

//单例模式
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();
}

猜你喜欢

转载自blog.csdn.net/TGB_Tom/article/details/113142948