首先声明,我是一个菜鸟。一下文章中现出技术误导情况盖不负责
在.NET个人版机房收费系统中,例如窗体的例实化发生、B层中的类调用抽象工厂来例实化工厂类(来创立捏词的程过)、SqlHelper的调用等等,个人版面里调用抽象工厂都是每次要需调用抽象工厂时就会例实化一次,例如:
Dim factory As New DBFactory '例实化工厂量变 Dim IsBoolean As Boolean Dim iUser As IUser = factory.CreateUser() '调用工厂来创立口接
这样做从功能现实角度来看没有题问,但是从内存的应用角度来讲,每例实化一次就要需内存为其分配一块内存空间,在这个程序运行程过当中可能要需调用工厂来创立捏词,这样雷同的类,我们多过的例实化不仅浪费了内存空间,来降低了程序的体整的行执率效,
由于学习过设计式模后来考虑到应用单例的式模可以处理这个题问即:证保一个类唯一一个例实,并供给一个拜访它的全局拜访点。
加上单例式模后码代:
Private Shared instance As DBFactory '定义一个静态的FactoryDataBase对象 Private Shared ReadOnly padlock As New Object() '定义静态的只读的object对象 Private Sub New() '私有的构造方法 End Sub '例实化方法 Public Shared Function GetInstance() As DBFactory '两重锁定,防治多线程例实化同一个对象 If IsNothing(instance) Then SyncLock padlock If IsNothing(instance) Then instance = New DBFactory() End If End SyncLock End If Return instance End Function
单例式模虽然可以证保一个类例实化一个对象但是这个类如果在多线程的情况下极可能现出多个例实化对象,所以我们参加Lock,确保当一个线程位于码代的临界区时,另一个线程不进入临界区,其他线程试图进入锁定的码代,它经直一等待(即被止阻),直到该对象被放释。
单例式模分为两种用法:饿汗式单例类和懒汉式单例类饿汉式单例类是当静态初始化的式方是在自己被载加时可就将自己例实化;懒汉式是在第一次被引用时,才会将自己例实化。体具用法根据际实的需求来判断,从而来证保数据的安全。
设计式模的应用很大程度上提高了我们的程序的行执率效和优化了我们的码代。其他设计式模继承求要中……
文章结束给大家分享下程序员的一些笑话语录: 话剧:程序员过沟
本剧内容纯属虚构,如有雷同……HEHE……俺也没办法了。
话说某市街道改建,某某软件公司门口横七竖八挖了几条大沟。一群程序员(SDK程序员赵某,VB程序员钱某,VC程序员孙某,DELPHI程序员李某)下班从公司里出来,看到门前的几条沟,于是各显神通……门前第一条沟也就半米来宽,SDK程序员赵某二话没说,轻轻一跃跳了过去,看到其它人纷纷把随身携带的公文包(类库)横在沟上踩着过沟,不屑地说,这么小一条沟,犯得着小题大做用那个吗?看我多么轻松多么洒脱多么……多么……(众人皆怒目横视之……)
接着第二条沟有点宽度。SDK程序员赵某还是还是一马当先,飞跃而起……不好,还差一点才到……幸好凭着多年的(跳远?编程?)经验,单手抓住沟沿,颤巍巍地爬了上来,嘴里还念念有词“高手就是高手啊,虽然差一点就……不过毕竟……HEHE……跳远是过沟的基础嘛,有基础(SDK)就有一切的说……”(众人作瞠目结舌状……)看到别人跳过去了,可自己又跳不了那么远,只好再想办法了……VB程序员钱某,DELPHI程序员李某打开手提,连上手机,开始上网找可供过沟的控件……VC程序员孙某却不慌不忙,打开公文包,把几块衬板拆了下来,然后三下五除二拼成一个简易木桥……“虽然这几个板子(类)做得不怎么样,不过先把这个项目应付过去,有时间我自己做一个好了……”于是踩着板子过了沟。
这时钱某和李某也分别找到了合适的东东。钱某找到的是“钢丝绳.ocx”,安装简单,使用方便,拉出一头,对孙某说“大虾,顺手拉兄弟一把……”,于是把绳子系在沟两边的绿化树木上,踩着钢丝就过了沟。刚刚站稳就四方作揖,“小生这里有礼了”。这时一戴着黄袖圈的老太太跳了出来,抓住钱某,“破坏绿化树木,罚款XXXX元,交钱,交钱,交钱!”(老人家作双枪老太婆怒视伪军状
……钱某被逼无奈,只好边掏钱,边对着后台叫道“导演,我这可是因公牺牲,不给个烈士称号也得报销”,后台一个臭鸡蛋飞出,“叫什么叫,我这个月的粮饷还不知哪里去领呢,都什么时代了,你不下岗都不错了……”)
李某看着刚刚好不容易从台湾拖回来的“铝条.ZIP”