我必须将大约10个班级变成单身,我认为不是复制粘贴代码,而是使用mixins是有意义的,就像这里描述的那样:http://msdn.microsoft.com/en-us/vstudio/bb625996.aspx
但是,我不需要那么多额外的方法,但是对类本身进行了更多的额外更改,我在应用这些指令时遇到了问题。
我尝试创建一个空接口ISingleton,然后将单例部分作为扩展添加到新类public static class Singleton
这是我想使用的单身部分:
public static SomeClass Instance
{
get { return _instance ?? (_instance = new SomeClass ()); }
}
private static SomeClass _instance;
但是当它作为扩展名添加时我遇到了问题 - 如何定义Instance属性,所以它可以被许多类重用? 第二个问题 - 我仍然需要手动将构造函数更改为私有。
这种方法有意义吗? 我之前没有使用过mixins,也许这不是正确的场景吗?
答案 0 :(得分:0)
您给出的mixins链接显示了用于向支持接口的所有对象添加功能的扩展方法。您仍然需要先创建对象。由于单例模式处理对象的创建,因此应用这些技术基本上还为时过早。
Singleton不必如此复杂,你正在阅读Jon Skeets的文章,这很简单:
public sealed MyClass
{
private MyClass(){}
public static MyClass Instance = new MyClass();
}
通常都是你需要的。如果需要,我很乐意重复10次代码。或者可以使用服务定位器或IoC容器来管理对象的生命周期。