How can a singleton class use an interface?

心不动则不痛 提交于 2019-12-20 10:57:29

问题


I read at many places that singletons can use interfaces. Some how I am unable to comprehend this.


回答1:


Every class can implement an interface, and a Singleton is just a "normal" class that makes sure that only one instance of it exists at any point in time apart from the other business logic it may implement. This also means that a Singleton has at least 2 responsibities and this is not good OO design as classes should only have 1 responsibility and make sure they are good at that responsibility, but that is another discussion.




回答2:


Something like:

public interface MyInterface 
{
}

And

public class MySingleton implements MyInterface
{
  private static MyInterface instance = new MySingleton();

  private MySingleton() 
  {
  } 

  public static MyInterface getInstance()
  {
    return instance;
  }
}



回答3:


I think I understood your problem. You want to define factory method in interface (static method to getInstance()). But since factory method can't be defined in interface, that logic will not work.

One option is to have a factory class which holds that static method. So there will be three classes first class to hold static method second is the interface third is the concrete class

But we can not make the concrete constructor private.

But if your infrastructure has two packages one for public and the other for private

define interface in public, make concrete class package level (with out any access modifier) and Factory class and static method be public.

I hope this could help you.




回答4:


A singleton has an instance - it just never has more than one instance. You probably use a couple of static members for reference-fetching and to ensure that it never gets multiple instances, but for the most part the class is the same as any other class.




回答5:


Basically, a singleton class is a class which can be instantiated one and only once. The singleton class pattern is implemented by using a static method to get the instance of the singleton class and restricting access to its constructor(s).

As with the usage of an interface, it would be similar to the way any other class would implement an interface.

And also it shouldnt allow cloning of that object.



来源:https://stackoverflow.com/questions/1497003/how-can-a-singleton-class-use-an-interface

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!