Halcon视觉之家-Halcon视觉技术论坛

 找回密码
 会员注册

QQ登录

只需一步,快速开始

扫一扫,微信登录

查看: 2055|回复: 2

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

[复制链接]

该用户从未签到

8

主题

62

帖子

169

积分

Rank: 6Rank: 6

积分
169
发表于 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 鼓励转贴优秀软件、源码和文档!.

查看全部评分

该用户从未签到

9

主题

61

帖子

556

积分

Rank: 3

积分
556

切换助手验证会员

发表于 2018-11-14 15:40:01 | 显示全部楼层
写的太好了,,赞
您需要登录后才可以回帖 登录 | 会员注册

本版积分规则

视觉培训招生

建议您使用Chrome、Firefox、Edge、360、IE10以上等主流浏览器浏览本论坛

算子查询| 申请友链| 小黑屋| 手机版| Archiver| 业务支持|

© 2015-2021 Halcon视觉之家  X3.4  粤ICP备15095995号 粤公网安备44030602000670号

本站已安全运行:

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