2

我必须将大约 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,也许这不适合它?

4

1 回答 1

0

您提供的 mixins 链接显示了用于向支持接口的所有对象添加功能的扩展方法。您仍然需要先创建对象。由于单例模式处理对象的创建,因此应用这些技术基本上还为时过早。

单例不必那么复杂,你正在阅读 Jon Skeets 的文章,很简单:

public sealed MyClass
{
   private MyClass(){}
   public static MyClass Instance = new MyClass();
}

通常是您所需要的。如果需要,我很乐意重复该代码 10 次。或者可以使用服务定位器或 IoC 容器来管理对象的生命周期。

于 2013-09-16T09:36:01.343 回答