星空网 > 软件开发 > ASP.net

.NET设计模式之单例模式

  说说我学习单例模式的原因 :

  在做MDI WinForm程序的时候,需要每个子窗体只能打开一次(同时只能有一个子窗体实例),之前网上看到好多种解决方案,各种尝试都解决不了我遇到的问题,相信很多人跟我一样,现在可以告诉大家,单利模式可以完美解决。

  单例模式总结:

  1. 目标:一个类只能有一个实例存在
  2. 类的实例通过自身来创建
  3. 由于类实例只能有一个,所以类的构造函数必须是private的
  4. 类内部必须有一个逻辑单元来返回给外部一个类实例(对象)

  以下是实现过程:

  我的MDI程序子窗体(用户管理--UserMgrForm)

    private static UserMgrForm UsrForm; //子窗体实例    private static readonly Object asyncRoot = new Object(); //只读的object对象     //构造函数    private UserMgrForm()    {      InitializeComponent();    }     //子窗体创建实例的方法(必须是静态,因为不允许用类实例调用实例方法,那样就没意义了)    public static UserMgrForm GetInstance()    {      if (UsrForm == null)      {        lock (asyncRoot)  //这个是用在多线程程序下的双锁        {
            //判断子窗体实例是否为null if (UsrForm == null) { UsrForm = new UserMgrForm(); } } } return UsrForm; }
     
     //修改子窗体UserMgrForm.Designer.cs文件中的代码为
     protected override void Dispose(bool disposing)
        {
            if (disposing && (components != null))
            {
                components.Dispose();
            }
       //base.Dispose(disposing); //原来的代码
            base.Hide();
        }

     那么在主窗体中如何实现打开子窗体呢
     //用户管理
        private void miEmpMgr_Click(object sender, EventArgs e)
        {
            SysMenu.UserMgrForm.GetInstance().MdiParent = this;
            SetUI.SetFormTitle(SysMenu.UserMgrForm.GetInstance(), "用户管理"); //窗体标题
            SetUI.SetMdiChildSize(SysMenu.UserMgrForm.GetInstance());  //设置子窗体初始尺寸
            SetUI.SetMdiFormState(SysMenu.UserMgrForm.GetInstance());  //设置子窗体状态
            SysMenu.UserMgrForm.GetInstance().Show(); //显示子窗体
        }

   单例模式还有几种写法,这里就不一一些出来了。

 




原标题:.NET设计模式之单例模式

关键词:.NET

*特别声明:以上内容来自于网络收集,著作权属原作者所有,如有侵权,请联系我们: admin#shaoqun.com (#换成@)。

亚马逊税务筹划:如何减少vat代缴的烦恼:https://www.kjdsnews.com/a/1311789.html
亚马逊法国电商发票vat申报完全指南:https://www.kjdsnews.com/a/1311790.html
亚马逊法国在vat申报截止日期到来之际,有哪些要注意的事项?:https://www.kjdsnews.com/a/1311791.html
亚马逊法国vat申报最后期限将至:千万不要错过!:https://www.kjdsnews.com/a/1311792.html
亚马逊欧洲站:英国vat税率是多少?:https://www.kjdsnews.com/a/1311793.html
亚马逊意大利vat税务申报指南:https://www.kjdsnews.com/a/1311794.html
松花蛋是哪里的特产松花蛋的产地:https://www.vstour.cn/a/411229.html
怪物在游轮上复活的电影 怪物在游轮上复活的电影叫什么:https://www.vstour.cn/a/411230.html
相关文章
我的浏览记录
最新相关资讯
海外公司注册 | 跨境电商服务平台 | 深圳旅行社 | 东南亚物流