将计算机思维故事化——之设计模式单例模式

来源:互联网 发布:java中线程的面试题 编辑:程序博客网 时间:2024/05/13 18:27

朋友,在您周围的世界里,有没有发现,有些名词是一个笼统的称呼,但对于特定的人却又是唯一的?比如:父母、祖国、第一语言等等。——“父母”是一个笼统的称呼,但对于特定的人,他的“父母”是唯一的;“祖国”是一个笼统的称呼,但对于特定的人,他的“祖国”是唯一的。

朋友,那么在计算机的世界里,您觉得哪些东西也是需要规定是唯一的?比如:游戏保存进度文件、退出提示对话框等等。

 

在这篇文章里,我们介绍一种设计模式,叫单例模式。它的特点就是——唯一

也许是为了减少开支,也是为了直观操作,也许是为了便于管理,也许是为了优化共享,总之,出于某种目的,我们需要让某样东西是唯一的

 

为了描述这种设计模式,我们引入一个非常注重“唯一”的例子——封建帝制下的皇帝

 

——第一个问题:封建帝制下的皇帝有什么特点?

  • 在掌握资源的“核心集团”手中产生
  • 除了这“核心集团”,其他人不能产生
  • 只产生一个
  • 产生一个之后,立刻与全国人民建立联系

【这种设计模式被称为“单例模式”。该设计模式的特点是:第一,在定义的类内,就已经实例化了一个对象;第二,在类外,不允许再实例化新的对象;第三,在类内,只实例化一个对象;第四,提供可供全局访问的访问点。】

 

——第二个问题:皇帝的“领导地位”在什么时候确立的?

封建帝制下的皇帝,大体分成两种:开国皇帝和非开国皇帝。

这两类皇帝“领导地位”的确立时间是不同的:前者是在这个“核心集团”组建的时候,就选出一个人,确立了他的领导地位(例:汉高祖);后者则是在这个国家,没有领导人的人,再选出一个人,确立他的领导地位。

前者的产生,是随着“核心集团”的产生而产生;后者的产生,是基于对国家形势的判断。

【前一种单例模式被称作“饿汉式单例”,在类刚刚被加载的时候,就已经实例化了对象;后一种单例模式被称作“懒汉式单例”,在访问全局访问点的时候,根据判断再开始实例化对象。】

 

——第三个问题:在封建的帝王制度下,应该注意点什么?

  • 要改变这种统治,就必须改变那个人
  • 皇帝不理政事,对整个国家都不利
  • 当国家出现多股力量时,要注意皇帝的安全问题

【单例模式的特点:第一,想要对实例化出来的对象进行修改,必须重新修改原来的定义类;第二,该模式下,单例的对象没有实例化出来,整个程序都无法运行;第三,当多线程共同访问单例时,要注意多线程导致的安全问题。】




* 思维碰撞,不要忘了与好友分享!未来将推出“将计算机思维故事化”系列,谢谢大家的关注!*

0 0
原创粉丝点击