小编Mos*_*ner的帖子

在泽西使用Gson代替杰克逊

我有一个消耗和生成JSON对象的RESTful服务,我希望Jersey使用Gson而不是Jackson.

如何才能做到这一点...?

jax-rs jaxb jersey jackson gson

28
推荐指数
2
解决办法
3万
查看次数

Singleton模式的替代方案?

我正在尝试设计一种更灵活的Singleton形式.

我想解决的问题如下:

  • 单身人士无法轻易进行测试.
  • 他们滥用面向对象的方法,不允许继承,代码变得线性,许多开发人员倾向于过度使用它们.
  • 它们仅限于一个实例,在重复相同机制的意义上而不重复类本身(例如,ThreadPool作为每个应用程序的单例操作的方式,但每个应用程序都有自己的实例).

现在,我到目前为止提出的解决方案如下:

  • 使Singleton类成为具有内部构造函数的常规公共类(只能由同一个包的类访问).
  • 与每个面向产品的类一样,所有静态属性和静态常量都被移动到一个内部SingletonShared类,该类将作为参数传递给Singleton的构造函数.这两个隐藏在公众背后SingletonFactory,具有静态方法getInstance(key).
  • 在情况下,我们所面对的是更复杂的系统,其中每个单需要它自己的一套独特的参数,我加的静态方法setAdapter(adapter)SingletonFactory.使用该方法getShared(key),实现的类ISingletonAdapter 应该返回该SingletonShared实例的值(例如, SingletonXmlAdapter将Xml文件传递给构造函数,并根据给定的键对某个节点进行反序列化).

以上所有都包装Singleton在一起.

现在,出于测试能力的目的,可以选择将Singleton标记为内部类,并使其实现ISingleton公共接口.

问题:

  1. 这个解决方案可以接受
  2. 是否有更好/更清洁/更短的方法来达到同样的效果?
  3. 哪个版本最好(Singleton作为内部与构造函数作为内部)?

谢谢!

architecture singleton design-patterns

4
推荐指数
1
解决办法
712
查看次数