关于vb.net单例模式的信息

这个语句为什么开发者注释为"单例模式"?C#当vb.net单例模式你用到一个(或几个)全局vb.net单例模式的对象来处理对某个类的所有请求是,vb.net单例模式你就用到vb.net单例模式了单例模式.
单例模式可以保证某个类型中只有一个实例,所有的请求都有该实例处理.
其实在VB中开发者已经在毫不知情的情况下使用了很多年的单例模式,例如Form1.Show()
在单例模式中不仅仅是一系列静态函数的集合.你可以对实例的创建更自由的控制,例如添加一个静态方法并给出一些必要的处理逻辑.
//望采纳
vb.net 集成开发的三种模式设计模式vb.net单例模式:界面设计和代码编辑
运行模式:运行应用程序
中断模式:暂时中断运行vb.net单例模式,调试程序
VB.NET中的动态代码生成技巧 本文vb.net单例模式的讨论也将着眼于这两种情况 首先是当程序员需要动态建立一个控件并将代码附着于控件之上时 例如 vb.net单例模式你或许想创建一个链接列表 但是不知道需要创建链接的数量或是链接中会出现什么样的数据 第二种是当程序员需要定义代码以反映出特殊需求的时候 例如 你或许要执行能反映用户系统配置的代码
类似上述的情况当然不会每天都上演 事实上 它们只在非常情况下才出现 然而 作为程序员 仍然要意识到 NET为解决动态情形提供了方案 有了正确的技巧 你就可以写出能灵活处理动态情况的应用程序了
使用动态控件
许多程序员总会遇到需要动态创建控件的时候 我们所展示的例子中程序员向FlowLayoutPanel中添加了LinkLabels 或许你可以个这样的设置来记录和保存常用的URL 文件 网络地址或是其vb.net单例模式他资源所在位置的数值 这一示例没有真正保存链接 但是你可以使用XML序列化功能来实现保存
每次当用户点击Test按钮时 示例代码就会动态创建一个新的LinkLabel控件 真正的演示代码并不复杂 例一就展示了创建这类控件以及将控件放入FlowLayoutPanel lstLabel中通常所需要做的一切
例一 向FlowLayoutPanel中添加新的链接Private Sub btnTest_Click() Handles btnTest ClickCreate a linkDim NewLink As LinkLabel =New LinkLabel()Add some properties to itNewLink Text = DateTime NowToLongTimeString()Set the click event handlerAddHandler NewLink ClickAddressOf NewLink_ClickPlace the button on the formlstLinks Controls Add(NewLink) End Sub
如你所料 该代码开始的时候创建了一个新的LinkLabel并为其赋予了一些值 这一示例使用的是当前时间 你的代码或许能够对某一真实资源进行访问
请注意该代码也向链接的Click事件中指定了一个处理程序 你必须使用示例中的AddHandler技巧 因为普通的Handles关键词路径不起作用 一方面 设计应用程序的时候你并不清楚控件的名称 即便你为控件指定了一个名称 你也不知道用户要创建的控件数量 所以我们没有办法清楚会有多少处理程序会被创建 处理程序的代码与控件代码类似 因此没有必要创建多个处理程序 用于这个示例的处理代码见例二 例二 处理动态控件点击事件Private Sub NewLink_Click( _ ByVal sender As System ObjectByVal e As System EventArgs)Verify that you actually have a LinkLabelIf Not sender GetType() Is GetType(LinkLabel) ThenMessageBox Show( Wrong control type provided! )ReturnEnd IfConvert the input sender to a Button Dim ThisLink As LinkLabel = senderShow that we have the correct button MessageBox Show( You created this link at:+ ThisLink Text)End Sub
你可能已经注意到例一中的事件处理器使用的是宽松代表——它没有将ByVal发送器作为System Object 也没有将ByVal e作为System EventArgs作为参数因为它不需要这二者 然而 当你创建一个事件处理器来动态创建控件时 通常你需要将ByVal发送器作为System Object参数 这意味着将这两者都包含其中

推荐阅读