单例类如何使用接口?

时间:2009-09-30 09:23:26

标签: java interface singleton class-design

我在许多地方读过单身人士可以使用的界面。有些我怎么也无法理解这一点。

5 个答案:

答案 0 :(得分:22)

每个类都可以实现一个接口,而Singleton只是一个“普通”类,它确保在它可能实现的其他业务逻辑之外的任何时间点只存在一个实例。 这也意味着Singleton至少有2个责任,这不是好的OO设计,因为班级应该只有1个责任并确保他们擅长这个职责,但这是另一个讨论。

答案 1 :(得分:11)

类似的东西:

public interface MyInterface 
{
}

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

  private MySingleton() 
  {
  } 

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

答案 2 :(得分:5)

我想我理解你的问题。您想在接口中定义工厂方法(静态方法到getInstance())。但由于工厂方法无法在接口中定义,因此该逻辑不起作用。

一种选择是拥有一个包含静态方法的工厂类。所以会有三个班级 第一类保持静态方法 第二是界面 第三是具体的课程

但我们不能将具体的构造函数设为私有。

但是,如果您的基础设施有两个包,一个用于公共,另一个用于私人

在public中定义接口,使具体的类包级别(没有任何访问修饰符)和Factory类和静态方法是公共的。

我希望这可以帮到你。

答案 3 :(得分:0)

单身人士有一个实例 - 它永远不会有多个实例。您可能使用几个静态成员来获取引用,并确保它永远不会获得多个实例,但是大多数情况下该类与任何其他类相同。

答案 4 :(得分:0)

基本上,单例类是一个可以实例化一次且只能实例化一次的类。 单例类模式是通过使用静态方法来获取单例类的实例并限制对其构造函数的访问来实现的。

与使用接口一样,它与其他类实现接口的方式类似。

而且它也不应该允许克隆该对象。