51Halcon机器视觉

 找回密码
 会员注册

QQ登录

只需一步,快速开始

扫一扫,微信登录

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

[基础教程] 帮助你更好的理解设计模式之--单例模式

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

    连续签到: 1 天

    [LV.4]偶尔看看III

    7

    主题

    45

    帖子

    160

    积分

    Rank: 6Rank: 6

    积分
    160
    发表于 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();              //一般实例化方式】


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

    评分

    参与人数 1热心值 +1 收起 理由
    绝地武士 + 1 鼓励转贴优秀软件、源码和文档!.

    查看全部评分

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

    2.提问请组织好自己的逻辑,标题注明大概是什么问题,问题内容写详细,需提供问题症状、错误代码、截图、位置等等信息,不要让别人去猜你想问啥;

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

    4.回报帮助你解决问题的坛友,右下角【免费评分】赠与对方视觉币和热心值,伸手党遭人唾弃,做一个热心并受欢迎的人!

  • TA的每日心情
    开心
    2020-8-12 20:13
  • 签到天数: 42 天

    连续签到: 1 天

    [LV.5]常住居民I

    9

    主题

    57

    帖子

    585

    积分

    Rank: 3

    积分
    585

    切换助手验证会员

    发表于 2018-11-14 15:40:01 | 显示全部楼层
    写的太好了,,赞

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

    2.提问请组织好自己的逻辑,标题注明大概是什么问题,问题内容写详细,需提供问题症状、错误代码、截图、位置等等信息,不要让别人去猜你想问啥;

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

    4.回报帮助你解决问题的坛友,右下角【免费评分】赠与对方视觉币和热心值,伸手党遭人唾弃,做一个热心并受欢迎的人!

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

    本版积分规则

    建议您使用Chrome、Firefox、Edge、IE10及以上版本和360等主流浏览器浏览本网站

    51Halcon会员技术交流会员技术交流 | 51Halcon官方客服咨询官方客服咨询 | Halcon切换助手使用反馈切换助手使用

    申请友链| 小黑屋| 手机版| Archiver| 有问题需要咨询站长?|  

    CopyRight © 2015-2020 51Halcon机器视觉. Version X3.4.

    粤ICP备15095995号-2 粤公网安备44030602000670号

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