技术开发 频道

c#设计模式实例


改进后的.net框架下的单件模式

public sealed class ExDotnetSingleton 
{
/// <summary>
/// 使用这个类来进行迟延初始化单件对象,
/// 并限制了的访问权限
/// </summary>
internal class internalSingleton
{
static internalSingleton()
{
}

/// <summary>
/// 限制了变量的访问权限在ExDotnetSingleton区域
/// </summary>
internal static readonly ExDotnetSingleton _instance = new ExDotnetSingleton();
}

private ExDotnetSingleton()
{
}

static public ExDotnetSingleton Instance
{
get { return internalSingleton._instance; }
}

/// <summary>
/// 定义一些函数来完成单件被初始化前的工作
/// </summary>
/// <param name="args"></param>
static public void InitSomeSetting(object [] args)
{

}
}
   上面的这个例子改进了上一个例子初始化控制问题,真正的延迟了_instance初始化到运行期。不仅仅如此,它还有其他优点:
1. 延迟初始化时间,并允许在初始化前做其他工作
2. 多线程中是安全的
3. 利用内部类分离了实现接口,并运行通过继承来实现代码重用
4. 同样利用了 .net框架的公共语言层来完成初始化工作

   但是存在效率上的缺点增大了类的体积。

相关的议题

    对于以上的议题,有人会提出这样的疑问为什么不将整个类声明为static?首先这个将整个类声明为static的确是在.net中常用的方式,例如: Console类就是一个static类。但是有一个问题就是如果整个类是static的话那么我们就无法对类进行初始化工作。
总结

    以上三个例子通过代码的方式,逐步的体现了如何利用.net框架提供的功能,更好的去实现一种模式。并且也告诉了我们何时去使用internal,readonly和static这三个关键字。
0
相关文章