当我们使用QQ的时候就会发现,他可以启动多个QQ,但是有时候,我们不想这样做,这时候我们就需要使用到单例模式.
1.将Form2的构造函数转为私有
using System.Windows.Forms;
namespace 单例模式
{
    public partial class Form2 : Form
    {
        private Form2()
        {
            InitializeComponent();
        }
    }
}

2.提供一个静态方法,返回一个对象

using System.Windows.Forms;
namespace 单例模式
{
    public partial class Form2 : Form
    {
        private Form2()
        {
            InitializeComponent();
        }
        public static Form2 GetSingle()
        {
            Form2 form = new Form2();
            return form;
        }
    }
}

3.在Form1中调用

using System;
using System.Windows.Forms;
namespace 单例模式
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
        private void button1_Click(object sender, EventArgs e)
        {
            Form2 form = Form2.GetSingle();//new Form2();
            form.Show();
        }
    }
} 

4.在Form2中创建一个单例

using System.Windows.Forms;
namespace 单例模式
{
    public partial class Form2 : Form
    {
        //全局唯一的单例
        public static Form2 FrmSingle = null;//这是一个静态的字段,初值设为null
        private Form2()
        {
            InitializeComponent();
        }
        public static Form2 GetSingle()
        {
            if (FrmSingle == null)//做一个判断,如果FrmSingle为null的时候在创建对象
            {
                FrmSingle = new Form2();//创建完这个对象之后不给Form2,给FrmSingle
            }
            return FrmSingle;//返回FrmSingle
        }
    }
}

做完以上的步骤,运行Form1,不管点几次创建按钮,都只是创建的哪一个对象.

C#之初识单例模式的更多相关文章

  1. C#单例模式初识

    设计模式之单例模式 定义: 确保一个类只有一个实例,而且自行实例化并向整个系统提供这个实例. 要素: 私有的构造函数(防止外部实例化) 指向自己实例的私有静态引用 以自己实例为返回值的静态公有方法或者 ...

  2. 初识mybatis(二)

    上篇博客我们介绍通过Java代码来创建mybatis的配置文件,港真,这种方式看起来有意思实际在开发中用的并不多,mybatis的配置还是以xml配置为主,本文我们就来看看如何通过xml文件来配置my ...

  3. Python中面向对象初识到进阶

    面向对象初识到进阶 # 面向对象结构: # class 类名: # def __init__(self,参数1,参数2): # self.对象的属性1 = 参数1 # self.对象的属性2 = 参数 ...

  4. 初识orm

    初识orm 一.什么是orm 介绍 ORM: 对象关系映射 将随对象映射成 数据表中的鱼跳跳记录 类--->表名 对象--->记录 对象.属性--->字段 # 演示映射关系 ''' ...

  5. 重学 Java 设计模式:实战单例模式

    作者:小傅哥 博客:https://bugstack.cn 沉淀.分享.成长,让自己和他人都能有所收获! 一.前言 5个创建型模式的最后一个 在设计模式中按照不同的处理方式共包含三大类:创建型模式.结 ...

  6. 【Kotlin】初识Kotlin之面向对象

    [Kotlin]初识Kotlin之面向对象 1.类 在Kotlin中,类用关键字class来定义 如果一个类具有类体,那么需要使用{ }来写类体内容,如果不需要类体,那么只需要定义类名就可以了 // ...

  7. C++实现线程安全的单例模式

    在某些应用环境下面,一个类只允许有一个实例,这就是著名的单例模式.单例模式分为懒汉模式,跟饿汉模式两种. 首先给出饿汉模式的实现 template <class T> class sing ...

  8. 23种设计模式--单例模式-Singleton

    一.单例模式的介绍 单例模式简单说就是掌握系统的至高点,在程序中只实例化一次,这样就是单例模式,在系统比如说你是该系统的登录的第多少人,还有数据库的连接池等地方会使用,单例模式是最简单,最常用的模式之 ...

  9. angular2系列教程(十)两种启动方法、两个路由服务、引用类型和单例模式的妙用

    今天我们要讲的是ng2的路由系统. 例子

随机推荐

  1. 项目 solrcloud / zookeeper 搭建

    财经道网站搜索引擎,数据快速检索,数据集群 功能描述:使用solr为项目数据库表p2p,银行理财,基金,贷款,信托,保险等建立数据索引,实现数据的导入,增量索引.实现检索建议和数据的快速查找.使用zo ...

  2. 运行 .jar dos 命令

    命令行进入 jar  所在文件夹 执行 java -jar  a.jar;

  3. 【Web】网站主如何更改网页标签的图标(favicon.ico)

    修改web项目的favicon图标,方式有两种:全局方式和局部方式 全局方式: 进入服务器\webapps\ROOT,然后用自己的favicon.ico替换服务器自带的favicon.ico图片 局部 ...

  4. 浮点数转byte数组

    ; float b=34.56745f; float c=0.0; ,,,}; byte* t=fbs; float2Bytes(t,b); unsigned int addrF=(unsigned ...

  5. s111 stark组件

    内容回顾: 1. 类当做key 2. django中的model所在app名称.以及小写类名. def index(request): # print(m1.UserInfo,m1.UserInfo. ...

  6. yersinia的DHCP池耗尽断网攻击

    http://jingyan.baidu.com/article/0eb457e5045bd703f1a9051d.html yersinia -G

  7. webupload编辑回显解决方案

    webupload java参考:http://blog.csdn.net/finalAmativeness/article/details/54668090 回显参考: https://segmen ...

  8. android 热更新nuwa

    简介 Nuwa是比较流行的一种Android热补丁方案的开源实现,它的特点是成功率高,实现简单.当然,热补丁的方案目前已经有很多了,AndFix, Dexposed, Tinker等,之所以要分析Nu ...

  9. jsTree问题

    1. 问题:刷新页面时,会自动打开刚才上次选中的节点 解决办法:去掉'state'插件 2. 关闭一个node时,使用close_all,不能修改class 注:好像用toggle_node,可以op ...

  10. 基于SketchUp和Unity3D的虚拟场景漫游和场景互动

    这是上学期的一次课程作业,难度不高但是也一并记录下来,偷懒地拿课程报告改改发上来. 课程要求:使用sketchUp建模,在Unity3D中实现场景漫游和场景互动. 知识点:建模.官方第一人称控制器.网 ...