面向对象设计模式之Singleton单例模式(创建型)
2012-02-24 09:32
507 查看
动机:在软件系统中,经常有这样的一些特殊的类,必须保证它们在系统中 只存在一个实例,才能确保它们的逻辑正确性、以及良好的效率
意图:保证一个类仅有一个实例,并提供一个该实例的全局访问点
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单件(创建型模式)
- 面向对象设计模式学习(二):Singleton单件创建型模式
- C#面向对象设计模式纵横谈(2):Singleton 单件(创建型模式) 笔记
- [导入]C#面向对象设计模式纵横谈(2):Singleton 单件(创建型模式).zip(9.57 MB)
- C#面向对象设计模式学习笔记(1) - Singleton 单件模式(创建型模式)
- [导入]C#面向对象设计模式纵横谈(3):Abstract Factory 抽象工厂模式(创建型模式)
- 面向对象设计模式之FactoryMethod工厂方法模式(创建型)
- 面向对象设计模式学习---Singleton模式(创建型)
- 面向对象设计模式之五种创建型模式
- C#面向对象设计模式学习笔记(5) - Prototype 原型模式(创建型模式)
- 面向对象设计模式之FactoryMethod工厂方法模式(创建型)
- [导入]C#面向对象设计模式纵横谈(6):Prototype 原型模式(创建型模式).zip(9.56 MB)
- [导入]C#面向对象设计模式纵横谈(5):Factory Method 工厂方法模式(创建型模式).zip(10.09 MB)
- 2.面向对象设计模式学习之Singleton单件模式
- [设计模式]SINGLETON(单件)_对象创建型模式
- 设计模式单件(Singleton)---对象创建型模式
- 设计模式(1)-对象创建型模式-Singleton模式
- 面向对象设计模式之AbstractFactory抽象工厂模式(创建型)
- 设计模式六:singleton单件模式——对象创建型模式