nkr*_*1pt 22
每个类都可以实现一个接口,而Singleton只是一个"普通"类,它确保在它可能实现的其他业务逻辑之外的任何时间点只存在一个实例.这也意味着一个单身人士至少有2个责任,这不是好的OO设计,因为班级应该只有1个责任并确保他们擅长这个责任,但这是另一个讨论.
Nic*_*olt 11
就像是:
public interface MyInterface
{
}
Run Code Online (Sandbox Code Playgroud)
和
public class MySingleton implements MyInterface
{
private static MyInterface instance = new MySingleton();
private MySingleton()
{
}
public static MyInterface getInstance()
{
return instance;
}
}
Run Code Online (Sandbox Code Playgroud)
我想我理解你的问题.您想在接口中定义工厂方法(静态方法到getInstance()).但由于工厂方法无法在接口中定义,因此该逻辑不起作用.
一种选择是拥有一个包含静态方法的工厂类.所以第一类将有三个类来保持静态方法第二个是接口第三个是具体类
但我们不能将具体的构造函数设为私有.
但是,如果您的基础架构有两个包,一个用于公共,另一个用于私有
在public中定义接口,使具体的类包级别(没有任何访问修饰符)和Factory类和静态方法是公共的.
我希望这可以帮到你.