08C#设计模式–单例模式.pptVIP

  1. 1、本文档共23页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
08C#设计模式–单例模式

www.ChinaSA.info www.ChinaSA.info Design Patterns 单例模式 刘 伟 (Sunny) weiliu_china@126.com 大纲 单例模式概述 单例模式的结构与实现 单例模式的应用实例 饿汉式单例与懒汉式单例 单例模式的优缺点与适用环境 单例模式概述 Windows任务管理器 在正常情况下只能打开唯一一个任务管理器! 单例模式概述 如何保证一个类只有一个实例并且这个实例易于被访问? (1) 全局变量:可以确保对象随时都可以被访问,但不能防止创建多个对象 (2) 让类自身负责创建和保存它的唯一实例,并保证不能创建其他实例,它还提供一个访问该实例的方法 单例模式概述 单例模式的定义 对象创建型模式 单例模式:确保一个类只有一个实例,并提供一个全局访问点来访问这个唯一实例。 Singleton Pattern: Ensure a class has only one instance, and provide a global point of access to it. Only one! 单例模式概述 单例模式的定义 要点: 某个类只能有一个实例 必须自行创建这个实例 必须自行向整个系统提供这个实例 单例模式的结构与实现 单例模式的结构 单例模式的结构与实现 单例模式的结构 单例模式只包含一个单例角色: Singleton(单例) 单例模式的结构与实现 单例模式的实现 私有构造函数 静态私有成员变量(自身类型) 静态公有的工厂方法 class Singleton { private static Singleton instance=null; //静态私有成员变量 //私有构造函数 private Singleton() { } //静态公有工厂方法,返回唯一实例 public static Singleton GetInstance() { if(instance==null) instance=new Singleton(); return instance; } } 单例模式的应用实例 实例说明 某软件公司承接了一个服务器负载均衡(Load Balance)软件的开发工作,该软件运行在一台负载均衡服务器上,可以将并发访问和数据流量分发到服务器集群中的多台设备上进行并发处理,提高了系统的整体处理能力,缩短了响应时间。由于集群中的服务器需要动态删减,且客户端请求需要统一分发,因此需要确保负载均衡器的唯一性,只能有一个负载均衡器来负责服务器的管理和请求的分发,否则将会带来服务器状态的不一致以及请求分配冲突等问题。如何确保负载均衡器的唯一性是该软件成功的关键,试使用单例模式设计服务器负载均衡器。 单例模式的应用实例 实例类图 服务器负载均衡器结构图 单例模式的应用实例 实例代码 (1) LoadBalancer:负载均衡器类,充当单例角色 (2) Program:客户端测试类 演示…… 参考代码 (DesignPattern\SingletonSample) 单例模式的应用实例 结果及分析 饿汉式单例与懒汉式单例 饿汉式单例类 饿汉式单例类(Eager Singleton) 饿汉式单例与懒汉式单例 饿汉式单例类 饿汉式单例类(Eager Singleton) class EagerSingleton { private static EagerSingleton instance = new EagerSingleton(); private EagerSingleton() { } public static EagerSingleton GetInstance() { return instance; } } 饿汉式单例与懒汉式单例 懒汉式单例类与双重检查锁定 懒汉式单例类(Lazy Singleton) 饿汉式单例与懒汉式单例 懒汉式单例类与双重检查锁定 双重检查锁定 class Singleton { private static Singleton instance=null; private Singleton() { } public static Singleton GetInstance() { if(instance==null) instance=new Singleton(); return i

文档评论(0)

wuyoujun92 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档