单例模式的运用-保证实例化一个抽象工厂
来源:互联网 发布:易语言种子搜索源码 编辑:程序博客网 时间:2024/05/16 05:47
在.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,确保当一个线程位于代码的临界区时,另一个线程不进入临界区,其他线程试图进入锁定的代码,它经一直等待(即被阻止),直到该对象被释放。
单例模式分为两种用法:饿汗式单例类和懒汉式单例类饿汉式单例类是当静态初始化的方式是在自己被加载时就可将自己实例化;懒汉式是在第一次被引用时,才会将自己实例化。具体用法根据实际的需求来判断,从而来保证数据的安全。
设计模式的使用很大程度上提高了我们的程序的执行效率和优化了我们的代码。其他设计模式继续要求中……
- 单例模式的运用-保证实例化一个抽象工厂
- 单例模式与抽象工厂模式结合实例
- 能否写一个单例模式,并且保证实例的唯一性?
- 单例模式(Singleton)-保证一个类仅有一个实例,并提供一个访问它的全局访问点。
- 单例模式--能够保证一个类仅有唯一的实例,并提供一个全局访问点。
- 单例模式/工厂方法模式/抽象工厂模式
- 单例模式,工厂模式和抽象工厂模式
- 工厂方法模式、抽象工厂模式、单例模式
- 有关工厂模式的运用实例
- 从简单工厂模式到抽象工厂模式的思考
- 抽象工厂模式实例
- 简单工厂模式 单例工厂模式 工厂方法模式 抽象工厂模式 原型模式
- 单例模式、工厂模式、抽象模式、模板方法模式
- JAVA常用设计模式总结(单例,工厂,抽象工厂)
- 设计模式一(工厂方法、抽象工厂、单例)
- PHP -单例模式 -简单工厂-抽象工厂
- 简单工厂 工厂模式 抽象工厂模式 创建者模式 原型模式 单例模式
- 简单的工厂模式+一个抽象接口
- 逆序存储文件(三)——文件内存映射
- JavaFX: Create Windows Native Installer and EXE with NetBeans 7.2
- ubuntu开机只显示空白桌面解决方案
- 欺世盗名者版权是版权,难道不让无名小卒者版权版权,牛鼻老道,无修养,先出言损人再先出脚跺人,一脚两脚,什么玩意,盗名欺世之狼,仗势欺人狗,说话真难听,自我膨胀一寸,皮蹦肉裂欺世盗名自灭,仗势欺人我决
- 个人对指针的理解,欢迎大家批评
- 单例模式的运用-保证实例化一个抽象工厂
- 黑马学习笔记
- 大话设计模式9 单例模式 桥接模式
- 【造轮子】用java编写属于自己的mvc---前言
- 单例模式
- 曾经没有打过老师没有骂过老师的人,今天竟然被小大教授跺了两脚,我也骂了一次大老师
- tftp安装错误记录
- Java 程序优化的一些最佳实践
- 机房收费系统个人重构——画图疑惑多多