态度决定高度、企图决定版图、格局决定结局

导航

Refactoring to remove Singleton

重构不仅仅是得到模式,重构也能够Remove模式.因为我们知道模式会带来系统一定程度上理解的复杂性:( -------这个问题确实存在的.尤其系统以后让一个不懂模式的人来维护的话,问题更大!所以用模式要慎重!

内联Singleton这个重构就是为了去除不合适的Singleton.

我们知道,Singleton为了保证系统拥有类的唯一实例,并提供一个全局访问点!从另外一个角度来说,就是搞个不可变的全局变量罢了!是不是怕怕了:-D

所以重构与模式一书提醒:当可以设计或者重新设计而避免使用他们的时候,Singleton就是没有必要的.

遇到这样情况,不要犹豫,内联它!这样能够使你的类关系更加明显。同时不用多余的代码就实现了唯一实例(0)。

具体做:

 

/// <summary>
/// Summary description for Class1.
/// </summary>
public class ConsoleSingleton
{
private static ConnObj obj = new ConnObj();

private ConsoleSingleton()
{
}
public static ConnObj GetConnn()
{
return obj;
}
}

public class ConnObj
{
}

public class Adapter
{
private ConnObj obj ;

public void DoWork()
{
Console.WriteLine(obj.ToString());
}
}
public class Client
{
public static void Main()
{
obj = ConsoleSingletion.GetConnn();
Console.ReadLine();
}
}

ConsoleSingleton是Singleton对象。但是这个对象没有起到多大作用。所以去除这个singleton

public class ConnObj
{
}

public class Adapter
{
private ConnObj obj ;

public Adapter(ConnObj _obj)
{
obj = _obj;
}

public void DoWork()
{
Console.WriteLine(obj.ToString());
}
}
public class Client
{
public static void Main()
{
new Adapter(new ConnObj()).DoWork();
Console.ReadLine();
}
}

posted on 2007-01-24 22:14  flyingchen  阅读(293)  评论(0编辑  收藏  举报