MDI窗体与单例模式

来源:互联网 发布:windows未能启动原因是 编辑:程序博客网 时间:2024/06/04 19:06

前言

    本篇博客小编来总结总结一下MDI窗体和单例模式,别看一个是窗体一个是设计模式,里面可有不少好玩的东西值得探究呢!


MDI窗体

Where

    这个要说到SDI窗体(单文档窗体),它只能打开一个文档。而我们通常的操作中,往往要打开多个文档。例如,我们的机房收费系统,操作员可能要同时查看学生信息表对学生进行注册,这时就要打开两个或者多个窗体,这时,MDI窗体就可以做到了。

What

    总结来说,MDI窗体就是允许用户同时打开多个文档界面。

How

    MDI的使用非常的简单方便,只需要将窗体的IsMdiContainer属性设置为true即可


单例模式

Where

    这个时候我们可以联想计算机中的任务管理器,无论你点击多少次,它只弹出来一次。为什么会这样呢?一,弹出多次会造成资源浪费。二、不同时刻弹出来的任务管理器也不一样,例如里面显示的CPU占用率、内存使用率,这让用户怎么看嘛!所以,无论我们点击多少次,它都只弹出来一次,这就引来了单例模式。

What

     确保一个东西只能有一个,如果在编程的角度来看,就是确保一个类只能实例化一个实例,并且自行实例化并向整个系统提供这个实例。

     这个我们还可以想到我们的机房收费系统,例如我想点击充值按钮打开充值界面,使用单例模式无论如何只实例化一个充值窗体,这在一定程度上减少资源浪费。

How

    一张图足以说明单例模式。单例模式只有一个Singleton类并且为private属性,提供唯一的一个对类的实例共享。内部提供GetInstance方法,让客户可以访问它的唯一实例。

  

两者关系

    MDI窗体和单例模式可谓是相辅相成的好兄弟关系。一个小demo可以很好的证明他们之间的关系:

//父窗体public Form1()        {            InitializeComponent();            //将Form1设置为MDI窗体,当然在Form1的IsMdiContainer属性页可以设置            this.IsMdiContainer = true;        }//点击子窗体按钮,打开子窗体,设置为当前父窗体的子窗体,并且调用窗体中的到单例模式 private void frmChildren_Click(object sender, EventArgs e)        {               FrmChildren child = FrmChildren.GetWindow();//调用方法            child.MdiParent = this;//设置child的父窗体为当前窗体            child.Show();                   }//子窗体,单例模式,声明GetWindow可调用方法  public partial class FrmChildren : Form    {        private FrmChildren() //由 public FrmChildren改为 private FrmChildren        {            InitializeComponent();        }        static FrmChildren fc = null; 创建一个静态对象        public static FrmChildren GetWindow()        {   //当子窗体没有开启或者已经释放。就可以创建新窗体            if (fc==null||fc.IsDisposed)            {                fc = new FrmChildren();            }            return fc;        }    }

原创粉丝点击