singleton之我见

2016-02-19 18:23 0 1 收藏

有了下面这个singleton之我见教程,不懂singleton之我见的也能装懂了,赶紧get起来装逼一下吧!

【 tulaoshi.com - 编程语言 】

 

先和大家说说什么是singleton模式的,它中文意应该为单一模式,但好别扭,也不知道是谁翻译的
  29796428(qiubole) 12:26:46
  它属于创建模式的一种
  29796428(qiubole) 12:27:00
  主要的作用就是确实一个类有且只有唯一的一个实例
  29796428(qiubole) 12:27:10
  这在实际当中,其实还是有一些用处的
  29796428(qiubole) 12:27:41
  比如,当前用户这个类,我们就应该只保证其只有一份
  29796428(qiubole) 12:27:57
  一般我们在写程序的时候,经常会为某一个类,或某一个窗体定义一个全局变量
  29796428(qiubole) 12:28:06
  但有了这个变局变量会带来很多的问题
  29796428(qiubole) 12:28:28
  一是,无法使用方便的命名空间(这在DELPHI中是没有的,没这概念)
  29796428(qiubole) 12:28:39
  二是,无法控制它的多次创建
  29796428(qiubole) 12:28:53
  利用singleton模式就能很好的解决这个问题
  29796428(qiubole) 12:29:11
  我们都知道,在delphi中,只有类方法,而没有类变量
  29796428(qiubole) 12:29:25
  所谓的类方法,就是其它如c++或java叫的静态方法
  29796428(qiubole) 12:29:35
  delphi采用的是smalltalk的叫法,称之为类方法
  29796428(qiubole) 12:29:45
  它的基本表现形式是 class procedure, class function
  29796428(qiubole) 12:30:00
  如果大家看过TObject这个对象的源码的话,就应该比较了解
  29796428(qiubole) 12:30:14
  诸如InitInstance, InstanceSize等
  29796428(qiubole) 12:30:35
  但delphi有一点,也是最让人不爽的一点,它只提供类方法,不提供静态属性,就是static变量
  29796428(qiubole) 12:31:00
  那么,我们就只好通过一种折 (这字不会打,妈的)的办法
  29796428(qiubole) 12:31:23
  c#里这样实现
   private static int i;
  29796428(qiubole) 12:31:40
  delphi没办法,只好把它放到implementation下面
  29796428(qiubole) 12:31:56
  这里的变量,只有当前单元的类的能访问
  29796428(qiubole) 12:32:11
  很好了,我们要的就是它,把它当成static吧
  29796428(qiubole) 12:32:48
  singleton的目的是控制上面说的两点,它又是如何做到的呢
  29796428(qiubole) 12:33:07
  其实,很简单,还是要通过class function 来入手
  29796428(qiubole) 12:33:29
  当任何使用这个对象的时候,都必须通过某一个静态方法(类方法)来访问所要的对象的实例
  29796428(qiubole) 12:33:42
  我们只要提供如下方法,一切就OK了
  29796428(qiubole) 12:34:11
  type
    TKillAll = class
      class function Instance: TKillAll;
    end;
  29796428(qiubole) 12:35:06
  implementation
  var
    locKillAll: TKillAll;
  class function TKillAll.Instance: TKillAll;
  begin
    if locKillAll = nil then
      locKillAll := TKillAll.Create;
    result := locKillAll;
  end;
  29796428(qiubole) 12:35:16
  ok,就是这么简单了,明白了没有????  
  同时,一定要防止用户直接调用create,设置一个局部变量,如果是由Instance 调用的Create,就允许创建,否则,就抛出异常

(本文来源于图老师网站,更多请访问https://www.tulaoshi.com/bianchengyuyan/)

来源:https://www.tulaoshi.com/n/20160219/1617500.html

延伸阅读
标签: 电脑入门
产品网页设计与演示稿(PPT)设计其实是大有区别的。因为定位不同,所以我们要考虑的用户体验也有区别,产品设计所考虑的细节这里不一一介绍了,而PPT 演讲稿的设计,由于需要考虑投影仪的清晰度,用色上是需要考虑的注意点,内容布局的排版上,重要的注意点是提醒主讲者一步步按照提纲走下去,有明显的逻辑关系,不至于岔道。 下面分享一下...
标签: 仙剑奇侠传5
《仙剑奇侠传5》之我见! 仙剑5玩到现在,不免有言待发,实在不吐不快。说到底就是有让人喷的欲望。纵观07年至今三款国产巨作,作为真心用情去玩,去感受的我,态度的转变让我自身都叹讶。昔日的仙4,我曾写了多少篇幅的感论,荐言,但至今想来,4年过去了,每每听到《回梦游仙》的曲调,忆起那恍如梦中之梦的情殇,潸然如旧。2010年的古剑,在...
Singleton模式 Singleton(译为单件或单态)模式是设计模式中比较简单而常用的模式。 有些时候在整个应用程序中,会要求某个类有且只有一个实例,这个时候可以采用Singleton模式进行设计。用Singleton模式设计的类不仅能保证在应用中只有一个实例,而且提供了一种非全局变量的方法进行全局访问,称为全局访问点,这样对于没有全...
《金书群芳谱》群芳修改完善之我见  个人对群芳修改的建议。  从武功和任务开始,有些mm自始至终是花瓶一般的洗了大绝还是一如既往的独守空闺。鉴于在大家都喜欢自虐的爱好。小弟有些意见希望慕容姐姐和各位朋友指点。  1。首先说最悲剧之一的穆念慈。低资质,低的不能再低的初始数值。倒是很多人打完射雕才发现原...
标签: ASP
现在InterNet 越来越成为生活中不可或缺的一部分,制作网页的动态语言也越来越多,主要流行的有以下几种,ASP,PHP 和 JSP,他们之间互有优缺点,笔者在工作实践中对他们作了一下比较浅显的比较。 ASP 由于其简单功能实用等方面受到广大朋友的喜欢,再加上MS的强有力支持,可以说是时下作站点最为流行的语言,他借助MS的Com+ 技术,几乎可以实...

经验教程

893

收藏

51

精华推荐

win7系统主题美化之我见

win7系统主题美化之我见

侯御朝

《帝国时代3》阵型之我见

《帝国时代3》阵型之我见

寂寞艹烟头

《帝国时代3》阵型之我见

《帝国时代3》阵型之我见

水晶之恋482

微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部