2009-11-12 132 views
4

我有一个名为SingletonController1的单身人士类别。由Singleton包装的单身人士或非单身人士

这个SingletonController1实例化了一堆其他的Singleton类。

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

我的问题是,如果我返工一下这个设计:

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

只要SingletonController2是实例化这三个非singleton类的唯一类,这是不是可以在功能上与之前的设计相同?

干杯

+1

我不清楚你为什么要做这个重新设计。如果你认为这些子类最好是以单身人士的形式表现出来,你为什么要设计它们,好像它们不是? – Beska 2009-11-12 21:52:35

+1

谢谢,不想重新设计它。我只是想,当然最好把限制强加给顶层(Controller),而不是强加给每个子类(因为Controller是实例化它们的唯一类)。 – CaptainHastings 2009-11-13 19:36:01

回答

5

功能将相同,但在第二种情况下灵活性要大得多,因为非单例类可以在应用程序/系统中的其他位置重用。如果他们不需要单身,让他们不是单身。

+1

谢谢,我的情绪正好。 – CaptainHastings 2009-11-13 19:33:37

1

是的。这两种设计完成同样的事情,考虑到除Singleton2之外没有任何其他类实例化Authenticator,DBAccessor和RiskAccessor。

1

我认为你是在正确的轨道上,但进一步推进。回到你的程序的根源,你只需要一个单身人士。之后还有一个合理的步骤。

+0

这是一个单一的应用程序的上下文吗? – HDave 2010-07-07 02:52:38

0

最近,我一直在做的是使用依赖注入框架来创建对象。他们可以做的是用一行代码来创建一个单独的类,并配置该类的创建方式。这样,如果你需要一个以上的对象,你只需删除该行并改变架构以稍微调用它。我刚刚使用了一个与Unity 3D一起工作的框架,所以我不确定Unity 3D以外的框架是否支持这个框架,但我有一个很好的感觉。