• 也谈单件模式


    前段时间,在看《C#设计模式》(还没看完)。大致了解了下单件模式。
    我就先“摘录”下书上是怎么说单件模式的:
    单件模式(SINGLETON):要求一个类仅有一个实例,与此同时,提供一个全局的访问点。这意味着:一个特定的对象承担了某项职责,而其他对象必须依赖这项职责。
    一般情况下,对一个单件对象进行惰性初始化,即仅当第一次使用这个对象的时候才对这个对象进行初始化。在一个单独的对象实例中,集中了这个对象实例所属类的所有权力。

    以上是《C#设计模式》对单件模式的描述。
    其实,我在看完书之后,一直都不大懂是什么意思,单件模式可以做什么用。只是,隐隐地知道,它的实例只能有一个。

    最近,我在做的一个项目中要有用到Mdi子窗体,而且只能实例化(打开)一个。
    我原来的做法是检查所有已经存在的mdi子窗体,如果它们中有需要的,那么把这个窗体BringToFront;如果没有,即还未被实例化,那么就初始化该窗体。

    后来,无意间在微软的新闻组中看到有人解答: mdi程序中如何让子窗体不重复打开的问题。我就看了下,发现他就是用单件模式来“锁定”mdi子窗体只能被实例化一次;如果该实例已经存在,就不做处理;如果不存在,就new一个。
    我突然豁然开朗:原来单件模式的应用可以这样地自然;原来这个就是单件模式。(当然啦,单件模式的应用肯定是要多得多,有用得多;但是,就从我这个菜鸟的角度来看,这个就是我目前要用到的单件模式)。
    我就在其基础上稍作更改,应用到了我的项目中。  呵呵!

    以下是他的问答,加代码:
    这个问题我来回答:不一定是最适合的方法,只是方法的一种。


    我是使用单例模式
    窗体类是这样写的

        public partial class Form1 : Form
        {

            
    #region 构造方法
            
    /// <summary>
            
    /// Form1构造方法
            
    /// </summary>
            private Form1()
            {
            }
            
    #endregion

            
    #region Form1单例模式
            
    /// <summary>
            
    /// Form1的单例实例
            
    /// </summary>
            private volatile static Form1 instance = null;

            
    /// <summary>
            
    /// 本类型的单例属性
            
    /// </summary>
            public static Form1 Instance
            {
                
    get
                {
                    
    if (instance == null||instance.IsDisposed)
                    {
                        instance 
    = new Form1();
                    }
                    
    return instance;
                }
            }
            
    #endregion
        }


    调用
    Form1.Instance.MdiParent = MdiForm;
    Form1.Instance.Show();


    发现,其实感觉很高深的东西,实际上都有它很简单的应用。不要认为设计模式是什么高深的东西,其实就那么回事(不知道有没有说错,反正这就是我这次的体会)!

    汇聚杭州外卖:外卖汇
  • 相关阅读:
    jenkins初始化启动报错导致进入web页面无法安装插件
    redis5.0.7集群搭建
    搭建redis哨兵模式
    Linux服务器安装python3.6
    MySQL绿色版安装
    OSChina中远程GIT仓库同步探索
    Android坡度计
    利用ADB获取APP资源
    实现两台路由器无线桥接
    新体能评定软件开发总结(一)
  • 原文地址:https://www.cnblogs.com/adaiye/p/988639.html
Copyright © 2020-2023  润新知