面向对象设计模式之Singleton单例模式
2012-02-24 09:32
351 查看
动机:在软件系统中,经常有这样的一些特殊的类,必须保证它们在系统中 只存在一个实例,才能确保它们的逻辑正确性、以及良好的效率
意图:保证一个类仅有一个实例,并提供一个该实例的全局访问点
UML图:
示例代码:
注:本示例代码是本人学习Webcast C#面向对象设计模式纵横谈系列讲座视频时,跟着李建忠老师一步一步的编写的,在此奉献出来,仅供大家参考
意图:保证一个类仅有一个实例,并提供一个该实例的全局访问点
UML图:
示例代码:
using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace Singleton { /// <summary> /// 只适用单线程下的单例模式,在多线程下无法保证其唯一实例 /// </summary> //public class Singleton //{ // private static Singleton instance; // private Singleton() { } // public static Singleton Instance // { // get // { // if (instance == null) // { // instance = new Singleton(); // } // return instance; // } // } //} /// <summary> /// 第一种:多线程单例模式的设计 /// </summary> //public class Singleton //{ // //volatile 会保证编译器不对代码指令的执行调整顺序,而保证其严格意义上的的按顺序执行 // private static volatile Singleton instance=null; // private static object lockHepler = new object();//起辅助作用 // private Singleton() { } // public static Singleton Instance // { // get // { // if (instance==null) // { // lock (lockHepler) // { // if (instance == null) // { // instance = new Singleton(); // } // } // } // return instance; // } // } //} /// <summary> /// 第二种:多线程单例模式的设计 /// </summary> public class Singleton { public static readonly Singleton Instance = new Singleton();//内联初始化 private Singleton() { } } /// <summary> /// 第二种实现等同于下面的实现,但这两者的弊端:就是不支持参数化传递的构造器 /// </summary> //public class Singleton //{ // public static readonly Singleton Instance; // //.NET机制会保证只有一个线程执行此82行代码,以加锁的方式防止又一个线程执行 // //在第一次访问任意静态字段之前,都会执行静态构造器,以保证静态字段都已初始化 // static Singleton() { Instance = new Singleton(); } // private Singleton() { } //} }
注:本示例代码是本人学习Webcast C#面向对象设计模式纵横谈系列讲座视频时,跟着李建忠老师一步一步的编写的,在此奉献出来,仅供大家参考
相关文章推荐
- C#面向对象设计模式:Singleton 单件(创建型模式)
- [导入]C#面向对象设计模式纵横谈(2):Singleton 单件(创建型模式).zip(9.57 MB)
- c#面向对象设计模式之Singleton
- 设计模式(Design Patterns)-可复用面向对象软件的基础 03:单例模式(Singleton)
- C#面向对象设计模式学习笔记(1) - Singleton 单件模式(创建型模式)
- C#面向对象设计模式纵横谈(2):Singleton 单件(创建型模式) 笔记
- 2.面向对象设计模式学习之Singleton单件模式
- C#面向对象设计模式纵横谈系列课程-单键模式(Singleton)
- 一起谈.NET技术,C#面向对象设计模式纵横谈:Singleton 单件
- 面向对象设计模式之Singleton单例模式(创建型)
- 2.面向对象设计模式学习之Singleton单件模式
- [整理]C#面向对象设计模式纵横谈(2):Singleton单件(创建型模式)
- 面向对象设计模式学习(二):Singleton单件创建型模式
- 跟我学设计模式视频教程——面向对象理论,模板方法
- 面向对象设计模式之FactoryMethod工厂方法模式(创建型)
- 企业数据库三层结构模型,MVC模式,设计模式,面向对象设计,接口规范及其他
- 面向对象和设计模式
- [导入]C#面向对象设计模式纵横谈(23):(行为型模式) Strategy 策略模式.zip(8.00 MB)
- 面向对象设计模式与原则
- 【设计模式】Object Oriented面向对象思想剖析