技术开发 频道

.Net设计模式之单件模式

【IT168技术文档】

  概述
 
  1.1意图
 
  单件模式保证应用只有一个全局惟一的实例,并且提供一个访问它的全局访问点。
 
  1.2使用场合
 
  当类只能有一个实例存在,并且可以在全局访问时。这个惟一的实例应该可以通过子类实现扩展,并且用户无须更改代码即可使用。
 
  我们前面介绍的工厂类经常被实例化为全局惟一的单件,可能的单件还有管理日志的对象、关键字生成对象和外部设备接口对象等。
 
  1.3结构
 
  单件模式的结构非常简单,包括防止其他对象创建实例的私有构造函数、保存惟一实例的私有变量和全局访问接口等。
 
  1.4效果
 
  单件提供了全局惟一的访问入口,因此易于控制可能发生的冲突。
 
  单件是对类静态函数的一种改进,首先它避免了全局变量对系统的污染;其次农业经济可以有子类,可以定义虚函数,具有多态性。而类中的静态方法是不能定义为虚函数的,因此不具有多态性。
 
  单件模式可以扩展为多件,即允许有受控的多个实例存在。
 
  .NET实现
 
  单件模式的实现比较简单,要点如下。
 
  (1)私有构造函数防止在外部实例化。
  (2)保存惟一实例的静态的私有变量。
  (3)初始化并获得惟一实例的静态方法。

  VB代码如下:

Public Class VBSingletonClass VBSingleton Private Shared mySingleton As VBSingleton Private Sub New()Sub New( ) End Sub Public Shared Function GetInstance()Function_ GetInstance( ) As VBSingleton If mySingleton Is Nothing Then MySingleton = New VBSingleton End If Return mySingleton End Funtion End Class
  单件计数器
 
  最简单的单件模式应用是计数器,在基于Web的应用中,我们希望有一个全局计数器来统计单击的次数。为此首先定义一个单件计数器:
public Class CounterClass Counter  Private intCounter As Integer = 0  Private Shared myCounter As Counter  Public Function Count()Function Count( ) As Integer IntCounter = intCounter + 1 Return intCounter  End Function  Public Shared Function GetInstance()Function_ GetInstance( ) As Counter   If myCounter Is Nothing Then   MyCounter = New Counter   End If   Return myCounter  End Function End Class
  然后在需要计数的页面前中增加调用代码:
Private Sub Page()Sub Page-Load(ByVal sender As_ System.Object,ByVal e As System.EventArgs) Handles MyBase.Load If Not Page.IsPostBack Then Me.Labell.Text =_ Counter.GetInstance.Count End Sub

0
相关文章