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) 编辑 收藏 举报