首先,我使用的是Objective-C,但这根本不重要。
我的情况是:
我有两种不同的情景。我通过预处理器宏来区分它们,如:
#ifdef USER
do some stuff for scenario 1
#else
do some stuff for scenario 2
两种方案都适用于整个应用程序中的项目列表,但区别在于获取这些项目的方式。
在第一个中,我通过向服务器发送请求来获取项目。
在第二个中,我从本地设备存储中获取它们。
我现在拥有的是第二个实施的方案。我有一个单例类,通过从本地存储中获取项目列表返回给我。 (像传统的数据库单例)
我想添加其他方案。由于项目可以从应用程序的任何一点获取,我希望这也是一个单身人士。
有一个单例超类,然后是两个实现获取项目的不同方法的子类是否有意义? Singleton层次结构对我来说听起来很奇怪。
答案 0 :(得分:1)
Factory作为使用另一个类来创建实例的模式,而不是仅仅使用构造函数。你最有可能在单身人士身上做到这一点。
能够配置工厂在rutime时实际创建哪种对象的策略。
答案 1 :(得分:1)
这不完全是等级制度。您提到的超类实际上是2个具体类的接口,如果您愿意,可以是单例。接口是一个抽象实体,因此任何与实例相关的术语都与它无关。
通过使用预处理器进行方案选择,您可以静态定义程序行为。如果你坚持这种方法并且它符合你的要求,你就不需要任何设计模式。在你的代码中只使用我上面提到的接口,它是静态实例化数据的端口。如果您想要更灵活(听起来很可能),您可以在运行时选择方案。在这种情况下,您可能会发现Strategy pattern对于应用方案非常有用,Factory pattern可用于实例化。