当前位置: 首页 > news >正文

职教mooc建设委员会网站seo搜索引擎优化包邮

职教mooc建设委员会网站,seo搜索引擎优化包邮,公司网页设计,广告优化师发展前景1.概述1.1意图单件模式保证应用只有一个全局惟一的实例,并且提供一个访问它的全局访问点。1.2使用场合当类只能有一个实例存在,并且可以在全局访问时。这个惟一的实例应该可以通过子类实现扩展,并且用户无须更改代码即可使用。我们…
1.概述
1.1意图

        单件模式保证应用只有一个全局惟一的实例,并且提供一个访问它的全局访问点。

1.2使用场合
        当类只能有一个实例存在,并且可以在全局访问时。这个惟一的实例应该可以通过子类实现扩展,并且用户无须更改代码即可使用。
        我们前面介绍的工厂类经常被实例化为全局惟一的单件,可能的单件还有管理日志的对象、关键字生成对象和外部设备接口对象等。

1.3结构
        单件模式的结构非常简单,包括防止其他对象创建实例的私有构造函数、保存惟一实例的私有变量和全局访问接口等。

1.4效果
        单件提供了全局惟一的访问入口,因此易于控制可能发生的冲突。
        单件是对类静态函数的一种改进,首先它避免了全局变量对系统的污染;其次农业经济可以有子类,可以定义虚函数,具有多态性。而类中的静态方法是不能定义为虚函数的,因此不具有多态性。
        单件模式可以扩展为多件,即允许有受控的多个实例存在。

2..NET实现
单件模式的实现比较简单,要点如下。
(1)私有构造函数防止在外部实例化。
(2)保存惟一实例的静态的私有变量。
(3)初始化并获得惟一实例的静态方法。
VB代码如下:
None.gif
ExpandedBlockStart.gifContractedBlock.gif
Public Class VBSingletonClass VBSingleton
InBlock.gif    
Private Shared mySingleton As VBSingleton
ExpandedSubBlockStart.gifContractedSubBlock.gif    
Private Sub New()Sub New( )
ExpandedSubBlockEnd.gif    
End Sub

InBlock.gif
ExpandedSubBlockStart.gifContractedSubBlock.gif    
Public Shared Function GetInstance()Function GetInstance( ) As VBSingleton
InBlock.gif        
If mySingleton Is Nothing Then
InBlock.gif           MySingleton 
= New VBSingleton
InBlock.gif        
End If 
InBlock.gif        
Return mySingleton
InBlock.gif    
End Funtion
ExpandedBlockEnd.gif
End Class


3.单件计数器
        最简单的单件模式应用是计数器,在基于Web的应用中,我们希望有一个全局计数器来统计单击的次数。为此首先定义一个单件计数器:
ExpandedBlockStart.gifContractedBlock.gif public Class CounterClass Counter
InBlock.gif        
Private intCounter As Integer = 0
InBlock.gif        
Private Shared myCounter As Counter
ExpandedSubBlockStart.gifContractedSubBlock.gif        
Public Function Count()Function Count( ) As Integer
InBlock.gif            IntCounter 
= intCounter + 1
InBlock.gif            
Return intCounter
ExpandedSubBlockEnd.gif        
End Function

InBlock.gif
ExpandedSubBlockStart.gifContractedSubBlock.gif        
Public Shared Function GetInstance()Function GetInstance( ) As Counter
InBlock.gif            
If myCounter Is Nothing Then
InBlock.gif              MyCounter 
= New Counter
InBlock.gif            
End If 
InBlock.gif            
Return myCounter
ExpandedSubBlockEnd.gif        
End Function

ExpandedBlockEnd.gif
End Class

然后在需要计数的页面前中增加调用代码:
ExpandedBlockStart.gifContractedBlock.gif Private Sub Page()Sub Page-Load(ByVal sender As System.Object,ByVal e As System.EventArgs)  Handles MyBase.Load
InBlock.gif           
If Not Page.IsPostBack Then Me.Labell.Text = Counter.GetInstance.Count
ExpandedBlockEnd.gif       
End Sub

下面的代码模拟访问,每单击一次按钮,计数器加1:
ExpandedBlockStart.gifContractedBlock.gifPrivate Sub Buttonl()Sub Buttonl-Click(ByVal semder As System.Object,ByVal e As System.EventArgs) Handles Buttonl.Click
InBlock.gif     
Me.Labell.Text = Counter.GetInstance.Count
ExpandedBlockEnd.gif
End Sub

这个计数器是全局的,在Counter中保存状态。

4.全局变量与单件

         在上例中,我们能否用一个窗体的全局变量来代替单件模式?我们定义一个静态的全局变量,在应用启动时初使化这个变量,然后可以在程序的任何地方使用这个变量。在这个例子中,是创建和打开一个窗体。如果我们关闭了这个窗体,会发现将无法再次打开,因为窗体的实例已经被销毁。惟一的办法是创建一个新窗体,因为无法知道哪些模块会调用这个窗体,因此在所有可能的地方都要判断这个窗体是否已经被销毁?是否需要重新创建?系统的维护量可想而知。
        可以看出,单件模式维护自身的实例化,在使用时是安全的。一个全局对象无法自行维护,也就无法避免重复创建多个实例,系统资源会被大量占用。更糟糕的是在很多情况下会出现逻辑问题,当这些对象访问相同的资源(例如串口时)时,会发生访问冲突。

5.单件与实用类中的静态方法
        实用类提供系统公用的静态方法,并且也经常采用私有化的构造函数。与单件不同,它没有实例,其中的方法全部是静态方法。
实用类与单件的区别如下。
(1)实用类不保存状态,仅提供功能。
(2)实用类不具有多态性,而单件可以有子类。
(3)单件是对象,实用类只是方法的集合。
        应该说在实际应用中,实用类的使用更广泛,而在涉及对象的情况下需要使用单件。例如能否用实用类代替抽象工厂?如果用传统的实现方式,显然不可。因为实用类没有多态性,会导致每个具体工厂的接口不同,在这种情况下必须将工厂对象作为单件。
        如果采用反射工厂,那么完全可以不采用单件模式,而将反射工厂作为实用类。因为只需要知道实例化的子类名称就可以完成实例化工作,具体工厂和抽象工厂已经合为一体,多态已无必要。
        因此何时使用单件,何时使用实用类要具体情况具体分析,不能一概而论。当然,如果把实用类作为单处理,在实现上是可以的,但没有必要这样做。


http://www.lbrq.cn/news/2469313.html

相关文章:

  • 广州微网站建设哪家好电商网站设计
  • 北京建设网站公司网站seo顾问培训
  • 团建拓展网站建设需求分析百度的链接
  • 网站建设周志200字销售管理
  • 来年做啥网站能致富首码项目推广平台
  • wordpress iis7伪静态seo公司排行
  • 建设 静态网站全球十大网站排名
  • 5000人网站开发域名查询注册信息查询
  • 学做网站的学校乔拓云网微信小程序制作
  • 网站上线流程分为seo职位要求
  • 用GIF软件做的GIF 超出网站限制免费信息发布平台网站
  • 成都私人放款联系方式电话优化公司网站排名
  • 就业网站建设总结seo网络推广师招聘
  • 杭州的电商网站建设百度大搜是什么
  • 网站开发的技术意义个人seo外包
  • 朗读者外国人做的汉字网站个人自己免费建网站
  • 公司注册地址可以跨市变更吗广州seo外包公司
  • vue做的商城网站seo是哪个英文的缩写
  • 展厅设计图效果图大全seo比较好的优化方法
  • 电子商务网站建设与管理目录企业推广软文范文
  • 昆山市住房和建设局网站成功的网络营销案例有哪些
  • 做网站需要注册商标多少类电子商务seo名词解释
  • 建设门户网站的重要性邵阳疫情最新消息
  • 九亭做网站友情链接你会回来感谢我
  • wordpress多用户商城系统上海整站seo
  • 如何通过网站做网上报名系统seo技术推广
  • 杭州战争网站建设投资网站建设方案
  • 做网站精英软文写作服务
  • p2p网站制作价格专业网站建设
  • 域名没备案如何建设网站台州关键词优化服务
  • 泰山派GPIO编译 ADB下载 万用表测量GPIO电压
  • Cgroup 控制组学习(一)
  • 机器学习(重学版)基础篇(概念与评估)
  • 【vue3+vue-pdf-embed】实现PDF+图片预览
  • 小白如何认识并处理Java异常?
  • Web攻防-业务逻辑篇密码找回重定向目标响应包检验流程跳过回显泄露验证枚举