Singleton模式的替代方法?
我试图设计一个更灵活的Singleton形式。
我试图解决的问题如下:
现在,我到目前为止提出的解决方案如下:
SingletonShared
类中,该类将作为参数传递给Singleton的构造函数。 这两个隐藏在公共SingletonFactory
后面,它具有静态方法getInstance(key)
。 SingletonFactory
添加了一个setAdapter(adapter)
的静态方法。 使用方法getShared(key)
,实现ISingletonAdapter
的类应该返回该实例的SingletonShared
值(例如, SingletonXmlAdapter
将Xml文件传递给构造函数,并根据给定的密钥对某个节点进行反序列化)。 以上所有都是作为Singleton
包装打包的。
现在,为了测试目的,可以选择将Singleton标记为内部类并使其实现ISingleton
公共接口。
问题:
谢谢!
我认为你用SingletonFactory
描述的解决方案是ServiceLocator模式,而你的Singletons是服务。
这个解决方案可以接
这取决于你如何以及在哪里使用单身人士。 单身人士本身并不差,只要你隔离取决于他们的代码。 否则,每次需要测试夹具时,最终都会注入一堆复杂的单体。
如果你实例化Singletons而不是使用静态getters / setters,那么在不使用DI框架的情况下依赖注入将更加困难,除非你传入单例,但是最终可能会得到一长串参数。
是否有更好/更清洁/更短的方式来达到同样的效果?
IoC容器和DI框架(微妙不同)通常用于控制依赖关系,否则这些依赖关系是单身人士。 然而,即使你消除了单身人士的罪恶,试图隔离对特定服务的依赖区域仍然是一个好习惯。
链接地址: http://www.djcxy.com/p/51099.html