单例包装非单例还是单例

4

我有一个名为SingletonController1的单例类。

这个SingletonController1实例化了许多其他的单例类。

SingletonController1{
Authenticator - Singleton;
DBAccessor - Singleton;
RiskAccessor - Singleton;
}

我的问题是,如果我重新设计成这样会怎么样:

   SingletonController2{
    Authenticator -non-singleton;
    DBAccessor -non-singleton;
    RiskAccessor -non-singleton;
    }

只要SingletonController2是唯一实例化这三个非单例类的类,那么这个设计在功能上不就与之前的设计相同吗?
祝好

1
我不清楚你为什么要进行这次重新设计。如果你认为子类最好表示为单例,为什么要设计成它们不是呢? - Beska
1
谢谢,我并不想重新设计它。我只是在想,把限制放在顶部(控制器)比在每个子类中强制实施要好(因为控制器是唯一实例化它们的类)。 - CaptainHastings
4个回答

5

第二种情况下,功能将保持不变,但灵活性更高,因为非单例类可以在应用程序/系统的其他地方重复使用。如果它们不需要成为单例,请让它们不成为单例。


1

是的。这两个设计实现了相同的功能,前提是除了Singleton2之外的任何类都不会实例化Authenticator、DBAccessor和RiskAccessor。


1

我认为你走在了正确的道路上,但是需要更进一步。回到你程序的根源,你只需要一个单例模式。之后还有一个逻辑步骤。


那个单例是应用程序上下文吗? - Dave

0
最近,我一直在使用依赖注入框架来创建对象。它们可以通过一行代码将一个类变成单例模式。这样,如果你需要多个对象,只需删除该行并稍微更改调用架构即可。我刚刚使用了一个专为Unity 3D设计的框架,所以我不确定Unity 3D之外的框架是否支持此功能,但我有信心它们会支持。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接