• 单例模式


    由于最近工作需要用到单实例模式,虽然以前对单实例模式有些了解,但却没有实际应用过,看了也就忘记了。再次熟悉一下:

    有时候,我们需要在程序运行整个过程中,为了效率问题或者用户体验,要求只产生对象的一个实例,这时候我们就需要用到单实例模式。

    例如:我们想在弹出对话框窗口时,不论用户触发多少次事件,当窗口存在时,只弹出一次。

    1:

    将弹出窗口Form1作为全局变量声明:Form1 frm1;

    在触发弹出窗口事件时判断Form1是否实例化,如果没有,实例化窗口弹出:

    if(frm1==null)

    {

      frm1=new Form();

      frm1.show();

    }

    但这时还是有问题,当我们关闭窗口后,再点击却不能在弹出窗口,因为在关闭窗口时,Form实例并没有为null而只是disposed。

    2:

    if(frm1==null||frm1.isdisposed)

    {

      frm1=new Form();

      frm1.show();

    }

    3:为了提高代码的重用性,将方法写成单独一个方法。

    public void OpenForm()

    {  

    if(frm1==null||frm1.isdisposed)

    {

      frm1=new Form();

      frm1.show();

    }

    }

    4:为了体现代码的封装性,我们将对窗口的实例化写进需要弹出的窗体中。

    private static Form1 frm1=null;

    private Form1()

    {

      InitializeComponent();

    }

    //构造方法私有,外部代码不能通过new来实例化。

    public static Form1 GetInstance()

    {

    if(frm1==null||frm1.isdisposed)

    {

      frm1=new Form();

    }

    return frm1;

    }

    到此,我们再总结一下:什么是单例模式?就是一个类只有一个实例,并提供一个访问它的全局访问点。

    如何才能是一个全局变量被访问并且防止被实例化为多个对象?最好的方法是让类负责保存它的唯一实例,这个类可以保证没有其他的类可以创建,并且提供一个公共方法访问该实例。

    寻找突破。。。
  • 相关阅读:
    shell 测试命令
    shell 键盘录入和运算
    shell 的变量
    shell 脚本 helloworld
    让windows系统的DOS窗口也可以显示utf8字符集
    wxpython发布还自己图标的程序
    弥补wxpython无背景图片缺陷
    wxPython实现在浏览器中打开链接
    使用py2exe发布windows平台Python
    python os模块实用函数
  • 原文地址:https://www.cnblogs.com/iskyoole/p/2545721.html
Copyright © 2020-2023  润新知