博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
单例模式
阅读量:4958 次
发布时间:2019-06-12

本文共 1582 字,大约阅读时间需要 5 分钟。



单例模式是一个比較简单的模式,其定义例如以下:

确保某一个类仅仅有一个实例。并且自行实例化并向整个系统提供这个实例。

 通用类图

通用代码

Public Class Singleton    Private sing = New Singleton    '限制产生多个对象    Private Singleton()    '通过该方法获得实例对象    Public Function getSingleton() As Singleton        Return sing    End Function    '类中其它方法,尽量是Static    Public Sub dosomething()    End SubEnd Class

 

单例模式的长处

1.因为单例模式在内存中仅仅有一个实例,因此降低了内存开支。特别是一个对象须要频繁的创建、销毁时。并且创建或销毁时性能又无法优化。

2.单例模式能够在系统设置全局的訪问点,优化和共享资源訪问。

3.单例模式能够避免对资源的多重占用。

 

缺点:

单例模式一般没有接口。扩展非常困难,若要扩展,除了改动代码没有另外一种途径。当然在特殊状况下。单例模式能够实现接口、被继承等

 

 

使用场景

A.要求生成一个唯一序列号的环境

B.创建一个对象须要消耗的资源过多。如要訪问数据库等资源

C.须要定义大量的静态常量和静态方法的环境,能够採用单例模式。

 

牛刀小试

本人在做机房收费系统的时候,就遇到了下面困扰,当点击显示某个窗口的时候,会一直的显示,因此就能够通过单例模式来组织此操作实现(当让也也有其它方法做推断来实现该操作)

如上图,当点击显示某个窗口的时候。一直不断的实例化窗口。因此能够考虑使用单例模式。

代码例如以下:

Public Class frmRegister    '一个实例化的參数。类型为该窗口    Private Shared m_frmRegister As frmRegister = Nothing    '''     ''' 该方法用来通过单例模式来实例化窗口    '''     ''' 
frmCheckOnlineInfo 返回要调用的窗口
'''
Public Function getfrmRegister() As frmRegister '在调用此方法来实例化该类时,做推断。看是否窗口已关闭 If m_frmRegister Is Nothing OrElse m_frmRegister.IsDisposed Then m_frmRegister = New frmRegister '若关闭,则实例化该窗口 End If Return m_frmRegister End FunctionEnd Class

在以后使用的时候 。仅仅需调用一次就可以。例如以下:

 Private Sub menuRegister_Click(sender As Object, e As EventArgs) Handles menuRegister.Click        frmRegister.getfrmRegister.MdiParent = Me        frmRegister.getfrmRegister.Show()  '通过该方法实例化该窗口类    End Sub

小结:模式来源于生活,所以仅仅有把模式生活化,多多实践才干更好的理解各个模式,也可以从生活中抽象出很多其它的模式。

转载于:https://www.cnblogs.com/wzjhoutai/p/7239764.html

你可能感兴趣的文章
开发环境中快速部署Oracle Essbase(Rapid deployment of oracle essbase in development envrioments)...
查看>>
Lodop Web打印插件使用
查看>>
sha1 加密 2...
查看>>
[GX/GZOI2019]旧词(树上差分+树剖+线段树)
查看>>
第509篇-Delegate和Event异同--(内容篇5:共6篇)
查看>>
设计模式--6大原则--开闭原则
查看>>
高德地图JSapi
查看>>
团队协作第八周个人PSP
查看>>
centos-linux热拔插scsi硬盘
查看>>
五周总结学习笔记
查看>>
docker 应用-2(Dockerfile 编写以及镜像保存提交)
查看>>
编码GBK的不可映射字符
查看>>
Response.ContentType 详细列表
查看>>
list集合转换成datatable
查看>>
九度 1551 切蛋糕(数学)
查看>>
1.4 使用电脑测试MC20的接收英文短信功能
查看>>
JavaScript学习笔记——FromData上传文件
查看>>
tomcat内存溢出设置JAVA_OPTS
查看>>
java之mybatis之查询及分页
查看>>
有上下界网络流
查看>>