【发布时间】:2009-09-30 09:23:25
【问题描述】:
我在很多地方读到过单身人士可以使用接口。有些我无法理解。
【问题讨论】:
标签: java interface singleton class-design
我在很多地方读到过单身人士可以使用接口。有些我无法理解。
【问题讨论】:
标签: java interface singleton class-design
每个类都可以实现一个接口,Singleton 只是一个“普通”类,它确保除了它可能实现的其他业务逻辑之外,在任何时间点都只存在它的一个实例。 这也意味着 Singleton 至少有 2 个职责,这不是好的 OO 设计,因为类应该只有 1 个职责,并确保它们擅长该职责,但这是另一个讨论。
【讨论】:
类似:
public interface MyInterface
{
}
和
public class MySingleton implements MyInterface
{
private static MyInterface instance = new MySingleton();
private MySingleton()
{
}
public static MyInterface getInstance()
{
return instance;
}
}
【讨论】:
我想我理解你的问题。您想在接口中定义工厂方法(getInstance() 的静态方法)。但是由于接口中不能定义工厂方法,所以这个逻辑是行不通的。
一种选择是拥有一个包含该静态方法的工厂类。所以会有三个班 第一类持有静态方法 二是界面 第三是具体类
但我们不能将具体的构造函数设为私有。
但是,如果您的基础架构有两个包,一个用于公共,另一个用于私有
公开定义接口,使具体的类包级别(没有任何访问修饰符)和工厂类和静态方法是公开的。
希望对你有帮助。
【讨论】:
一个单例有一个实例——它永远不会有多个实例。您可能会使用几个静态成员来获取引用并确保它永远不会获取多个实例,但在大多数情况下,该类与任何其他类相同。
【讨论】:
基本上,单例类是一个只能被实例化一次的类。 单例类模式是通过使用静态方法获取单例类的实例并限制对其构造函数的访问来实现的。
就接口的使用而言,它类似于任何其他类实现接口的方式。
而且它也不应该允许克隆该对象。
【讨论】: