工具软件   办公软件   操作系统   网络安全   设计在线   程序开发   教程宝典   软件下载   软件论坛
您的位置:软件 > 开发者网络 > 微软开发专栏 > 技术专题 > 正文
探究Singleton设计模式
[文章信息]
作者:Mark Townsend
时间:2004-08-02
出处:MSDN开发精选6月刊
责任编辑:方舟
[文章导读]
在本文中,我们将讨论Singleton模式,它包含在创造性模式系列中
advertisement
热点推荐
· Java加密和数字签名编程快速入门
· 在VB6中用命令行为模式控制GUI动作
· Excel图表向导详解
· 浅析各种计算机病毒应对方法
· 2月16日软件精选 春节文章精彩回顾
[正文]

1 2 3  下一页

  在开发软件应用程序过程中,随着应用程序的开发,会出现重复性的模式。随着整个软件系统的开发,很多相同的模式会逐渐显现出来。

  这种重复性模式概念在其他应用中是非常明显的。汽车制造就是一种此类应用。很多不同的汽车型号使用相同的子构件,包括大多数基本部件(例如,灯泡和紧固零件)以及较大的构件(例如,底盘和发动机)。

  在住宅建筑中,重复性模式概念适用于螺丝和螺钉以及整体总体建筑物配电系统。无论组建的小组是为了开发新的汽车设计还是新的建筑物设计,它通常不必没有考虑到以前已解决的问题。如果设计和建筑住宅的小组必须重新构思和设计房子的每一个组成部分,则整个过程所花的时间比现在要长得多。门高或灯开关功能等许多设计决策(例如,门高或灯开关功能)很容易理解。房为满足给房子不同部分提供洗手功能的要求,房屋设计师不必重新设计和重新建造不同类型的输供水和蓄水设施,以便达到为房子不同部分提供洗手功能的要求:标准水槽以及标准的热水和冷水输入接头和排水输出接头是很容易理解非常常见的房屋建筑构件。可以将重复性模式概念反复应用于我们周围的几乎每样东西上,包括软件。

  汽车和住宅建筑示例有助于在软件设计和构造中体现某些一般性的抽象概念。易于理解且明确定义的通用功能部件的概念是设计模式的源动力,它也是其他两篇设计模式文章探究工厂设计模式和探究观察者设计模式的重点。这些模式几乎涵盖了面向对象的软件设计的各个方面,包括对象创建、对象交互和对象生存期。在本文中,我们将讨论Singleton模式,它包含在创造性模式系列中。

  创造性模式指示如何以及何时创建对象。很多实例需要只能通过创造性方法解决的特殊行为,而不是在创建实例后强制实施所需的行为。此类行为要求最好的例子之一包含在Singleton模式中。Singleton模式在《设计模式:可复用的面向对象软件的基础》这一经典参考书目中有正式的定义,该书的作者包括Erich Gamma、Richard Helm、Ralph Johnson和John Vlissides(也称为四人组或GoF)。在设计模式中,此模式是最简单也是使用最广泛的模式之一。但是,正如我们将会看到的一样,在实现此模式时可能会出现一些问题。本文试图通过Singleton模式的多个早期实现来从头开始分析Singleton模式,以及如何在Microsoft .NET应用程序开发中发挥其最佳用途。

  Singleton模式

  按照设计模式中的定义,Singleton模式的用途是“ensure a class has only one instance, and provide a global point of access to it(确保每个类只有一个实例,并提供它的全局访问点)”。

  它可以解决什么问题,或者换句话说,我们使用它的动机是什么?几乎在每个应用程序中,都需要有一个从中进行全局访问和维护某种类型数据的区域。在面向对象的(OO)系统中也有这种情况,在此类系统中,在任何给定时间只应运行一个类或某个类的一组预定义数量的实例。例如,当使用某个类来维护增量计数器时,此简单的计数器类需要跟踪在多个应用程序领域中使用的整数值。此类需要能够增加该计数器并返回当前的值。对于这种情况,所需的类行为应该仅使用一个类实例来维护该整数,而不是使用其它类实例来维护该整数。

   最初,人们可能会试图将计数器类实例只作为静态全局变量来创建。这是一种通用的方法,但实际上只解决一部分问题;它解决了全局可访问性问题,但没有采取任何措施来确保在任何给定的时间只运行一个类实例。应该由类本身来负责只使用一个类实例,而不是由类用户来负责。应该始终不要让类用户来监视和控制运行的类实例的数量。

  所需要的是使用某种方法来控制如何创建类实例,然后确保在任何给定的时间只创建一个类实例。这会确切地给我们提供所需的行为,并使客户端不必了解任何类细节。


1 2 3  下一页

天极社区邀请您:写博客日记  上传相片   论坛聊天  订阅电子杂志  推荐网摘   免费图铃工具
笔名:   请您注意:

 遵守国家有关法律、法规,尊重网上道德,承担一切因您的行为而直接或间接引起的法律责任。

 天极网拥有管理笔名和留言的一切权利。
评论:
 
发表评论推荐给朋友我想参加相关培训打印我对此感兴趣订阅电子杂志
相关内容焦点新闻
  • .NET Web应用框架构建模式
  • .NET框架中基于角色的安全性
  • 基于.NET的多用户客户端设计
  • ADO.NET实用技巧两则
  • DataSet的数据并发异常处理
  • 使用ADO.NET设计数据库应用程序
  • 实例解说.Net构架下的加密编程
  • 从 .NET 程序集提供图像
  • VS.NET中构建数据库应用程序
  • 使用.NET智能版进行SIM编程
  • 中兴携手阿尔卡特 全球逐鹿CDMA
  • 用友总裁王文京:誓将ERP变成“大众消费”
  • 香港消费者委员会:数码相机最贵未必最好
  • 外电称中兴正评估西门子手机业务 或能并购
  • 国信办督战八大行业灾难备份 将出台国家标准
  • 中国IT企业走进欧盟 搭第六框架计划直通车
  • 美邦银行用户注意 警惕新型“钓鱼”邮件
  • 微软三年时间磨出新IE 具有更强大安全性能
  • Advertisement

    天极无线


    奇妙科幻|美好风光|清风车影|漫画卡通|星座生肖|明星写真|动物世界
    老鼠爱大米
    挥着翅膀的女孩
    女人味
    栀子花开
    白月光
    刚刚好
    江南
    快乐崇拜
    亲爱的你怎么不在我身边
    小薇
    2002年的第一场雪
    有多少爱可以重来
    我的地盘
    七里香
    情人
     
    老鼠爱大米 老板电话
    冲动的惩罚 七里香
    我不是黄蓉 女生撒娇
    盛夏的果实 坚持到底
    孤单北半球 眉飞色舞
    挪威的森林 可爱女人
    最浪漫的事 老板电话

    CSEEK搜索