热点推荐

查看: 235|回复: 2
收起左侧

帮助你更好的理解设计模式之--单例模式

[复制链接]
  • TA的每日心情
    开心
    2018-10-13 18:07
  • 签到天数: 24 天

    连续签到: 1 天

    [LV.4]偶尔看看III

    2

    主题

    14

    帖子

    224

    积分

    Rank: 6Rank: 6

    积分
    224
    发表于 2018-10-13 18:07:02 | 显示全部楼层 |阅读模式

    51Halcon诚邀您的加入,专注于机器视觉开发与应用技术,我们一直都在努力!

    您需要 登录 才可以下载或查看,没有帐号?会员注册

    x
    今天发生了一个错误,才真正参透了单例模式的精髓,以下介绍怎么理解单例设计模式,语法方面请百度;
    后来发散的想一想,原来单例模式和面向对象的理解是有非常大关系的。

    举例子:
    先明白第一点:类的实例化什么意思:“人”类,可实例(new)“男人”,也可实例(new)“女人”;
    再明白第二点:我们在使用类时都知道要先new一下,当你new了后,新的实例里面的数据可以看出全部是重新初始化的。
    当我在第一个窗体用这个类时肯定是先new一下,然后你会给这个类的实例中的某个数据赋值如:public string A=”小明”;
    当我们在另一个窗体用想读取我们之前那个A时,有的人会说我要用到这个类,那我要先new一下再读取A值,那你就错了,此时你一旦new,那么这就是一个新实例了,也就读取不到之前赋给A的小明这个值了!!

    此时一个很机智的程序设计模式:单例模式应运而生;它就是把你第一次实例化后就把它定义死了(人类就定死实例化为男人),以后你读写都是读写男人这个实例里面的所有数据!

    使用方法:
    一、在Vision类中创建单例
    #region 创建单例模式
           private static Vision _instance = null;
           private static readonly object locker = new object();
            private Vision()
           { }

           public static Vision Instance()
           {
               if (_instance == null)
               {
                    lock (locker)
                    {
                        _instance = new Vision();
                    }

               }

               return _instance;
           }
           #endregion
      public Tools m_Tools = new Tools();
    二、别的地方使用
    “实例化”方法:
      Tools m_Tools = Vision.Instance().m_Tools;//单例模式“实例化”方式
       //Toolsm_tools = new Tools();              //一般实例化方式】


    最后,每个人的思维方式不太一样,可能有的人看我上面写的感觉很尬,但是能帮助到一个人去理解好单例模式就是最好啦!欢迎指点补充!

    发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

    如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子分类或者标题加上【已解决】

    如何回报帮助你解决问题的坛友,可以以【悬赏】的方式提问,伸手党遭人唾弃,做一个热心并受欢迎的人!

  • TA的每日心情
    奋斗
    昨天 13:35
  • 签到天数: 22 天

    连续签到: 2 天

    [LV.4]偶尔看看III

    2

    主题

    21

    帖子

    2250

    积分

    Rank: 5Rank: 5Rank: 5

    积分
    2250
    发表于 3 天前 | 显示全部楼层
    写的太好了,,赞

    发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

    如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子分类或者标题加上【已解决】

    如何回报帮助你解决问题的坛友,可以以【悬赏】的方式提问,伸手党遭人唾弃,做一个热心并受欢迎的人!

    您需要登录后才可以回帖 会员登录 | 会员注册

    本版积分规则

    经营性网站备案信息 经营性网站
    备案信息

    中国互联网举报中心 中国互联网
    举报中心

    中国文明网传播文明 中国文明网
    传播文明

    诚信网站

    深圳市市场监督管理局企业主体身份公示 工商网监
    电子标识

    快速回复 返回顶部 返回列表