Singleton类可以是通用的吗?

时间:2018-03-19 10:58:14

标签: java design-patterns singleton

我希望我的应用程序有一个rest客户端。单身人士用于集中管理内部或外部资源,并为他们提供全球访问权限。我认为其余的客户端应该实现为Singleton类。

我可以用通用的方式实现这个类,这样我就能以某种方式控制我希望类的方法返回的对象的类型。

我正在寻找类似的东西:

public class JersyRestClient <T> implements RestClient
{
    private static JersyRestClient instance = null;

    private JersyRestClient()
    {

    }

    public static JersyRestClient getInstance()
    {
        if (instance == null)
        {
            synchronized (JersyRestClient.class)
            {
                if (instance == null)
                {
                    instance = new JersyRestClient();
                }
            }
        }
        return instance;
    }

    public T getContent(final String resourceUrl)
    {
        //get content
        //return T
    }

}

2 个答案:

答案 0 :(得分:2)

JersyRestClient<T>没有多大意义。 您将在getInstance()中返回特定内容。它会是什么?

  • 原始类型(JersyRestClient)。在这种情况下,您可以免除<T>
  • 某些特定类型JersyRestClient<MyContent>。可能但没有多大意义。
  • 您可以执行<T> JersyRestClient<T> getInstance(),这会导致转化为JersyRestClient<T>

类型参数T允许参数化JersyRestClient的实例。如果您只有一个实例,则无需参数化。

答案 1 :(得分:0)

我只是说它是逆变或抽象的。